diff --git a/zyplayer-doc-wiki/pom.xml b/zyplayer-doc-wiki/pom.xml
index ef8cce89..2d6f7bed 100644
--- a/zyplayer-doc-wiki/pom.xml
+++ b/zyplayer-doc-wiki/pom.xml
@@ -1,133 +1,124 @@
- 4.0.0
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
- zyplayer-doc-wiki
- jar
- zyplayer-doc-wiki
- wiki文档工具
- https://gitee.com/zyplayer/zyplayer-doc/zyplayer-doc-wiki
-
-
- zyplayer
- 暮光:城中城
- 806783409@qq.com
-
- Java Development Engineer
-
- 2018-05-22 16:06:06
-
-
+ zyplayer-doc-wiki
+ jar
+ zyplayer-doc-wiki
+ wiki文档工具
+ https://gitee.com/zyplayer/zyplayer-doc/zyplayer-doc-wiki
+
+
+ zyplayer
+ 暮光:城中城
+ 806783409@qq.com
+
+ Java Development Engineer
+
+ 2018-05-22 16:06:06
+
+
-
- com.zyplayer
- zyplayer-doc
- 1.1.5
-
+
+ com.zyplayer
+ zyplayer-doc
+ 1.1.5
+
-
- UTF-8
- UTF-8
- 1.8
-
+
+ UTF-8
+ UTF-8
+ 1.8
+
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- com.zyplayer
- zyplayer-doc-data
-
-
- com.zyplayer
- zyplayer-doc-core
-
-
- org.apache.poi
- poi
- 4.1.0
-
-
- org.apache.poi
- poi-ooxml
- 4.1.0
-
-
- org.apache.poi
- poi-ooxml-schemas
- 4.1.0
-
-
- org.apache.poi
- poi-scratchpad
- 4.1.0
-
-
- org.apache.poi
- ooxml-schemas
- 1.4
-
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.zyplayer
+ zyplayer-doc-data
+
+
+ com.zyplayer
+ zyplayer-doc-core
+
-
- com.atlassian.commonmark
- commonmark
- 0.10.0
-
-
-
-
- The Apache Software License, Version 2.0
- http://www.apache.org/licenses/LICENSE-2.0.txt
-
-
-
- scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
- scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
- git@git.oschina.net:zyplayer/zyplayer-doc.git
-
+
+
+ org.docx4j
+ docx4j-core
+ 8.3.9
+
+
+ org.docx4j
+ docx4j-JAXB-ReferenceImpl
+ 8.3.9
+
+
+ org.docx4j
+ docx4j-ImportXHTML
+ 8.3.8
+
+
+ com.atlassian.commonmark
+ commonmark
+ 0.10.0
+
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+
+
+
+ scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
+ scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
+ git@git.oschina.net:zyplayer/zyplayer-doc.git
+
-
-
- snapshots
- https://oss.sonatype.org/content/repositories/snapshots/
-
-
- snapshots
- https://oss.sonatype.org/service/local/staging/deploy/maven2/
-
-
+
+
+ snapshots
+ https://oss.sonatype.org/content/repositories/snapshots/
+
+
+ snapshots
+ https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
-
-
-
- src/main/resources/dist
- META-INF/resources/
-
-
- src/main/java
-
- **/*
-
-
- **/*.java
-
- false
-
-
- src/main/webapp
-
- **/*
-
- false
-
-
-
+
+
+
+ src/main/resources/dist
+ META-INF/resources/
+
+
+ src/main/java
+
+ **/*
+
+
+ **/*.java
+
+ false
+
+
+ src/main/webapp
+
+ **/*
+
+ false
+
+
+
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
index f8837dc6..75dd3c42 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
@@ -27,8 +27,10 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.poifs.filesystem.DirectoryEntry;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.docx4j.XmlUtils;
+import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
+import org.docx4j.openpackaging.parts.WordprocessingML.AltChunkType;
+import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -37,6 +39,7 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
@@ -337,18 +340,29 @@ public class WikiPageController {
return DocResponseJson.warn("文档内容为空,不能导出!");
}
try {
- ByteArrayInputStream bais = new ByteArrayInputStream(pageContent.getContent().getBytes("GBK"));
- POIFSFileSystem poifs = new POIFSFileSystem();
- DirectoryEntry directory = poifs.getRoot();
- directory.createDocument("WordDocument", bais);
- // 写入流
- response.setContentType("application/vnd.ms-excel");
- response.setCharacterEncoding("utf-8");
+ String content = pageContent.getContent();
String fileName = URLEncoder.encode(wikiPageSel.getName(), "UTF-8");
+ content = "\n" +
+ "\n" +
+ "
\n" +
+ "\n" +
+ "" + fileName + "\n" +
+ "\n" +
+ "" +
+ content +
+ "\n" +
+ "";
+ // 写入流
+ response.setCharacterEncoding("utf-8");
+ response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx");
ServletOutputStream outputStream = response.getOutputStream();
- poifs.writeFilesystem(outputStream);
- bais.close();
+ WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
+ MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
+ mdp.addAltChunk(AltChunkType.Xhtml, content.getBytes(StandardCharsets.UTF_8));
+ mdp.convertAltChunks();
+ XmlUtils.marshaltoString(wordMLPackage.getMainDocumentPart().getJaxbElement(), true, true);
+ wordMLPackage.save(outputStream);
outputStream.close();
return DocResponseJson.ok();
} catch (Exception e) {