11、docx4j生成文档格式转换
docx4jadmin 发布于:2018-10-15 15:20:24
阅读:loading
在继本篇文章后,关于docx4j的知识点要完结了,个人认为已经实现了企业级应用中的绝大多数的高端应用的具体实现,另外更多的一些具体实现不准备继续下去了,如果后面有需求实现了再补充。
关于docx文档的转换,常用到的我觉得是这三种:docx转换为doc、docx转换为html、docx转换为pdf,就这三种,本例也是将docx4j中提供的这三种给整理了一下,源文件是之前写的一份word文档《我的增量补丁整理软件》(介绍一款增量补丁自动化的软件实现),文中内容含有不同格式的字体、样式、文本缩进、间距、颜色、图片等系列相关的内容,转换后的效果也是比较好的,参考输出的内容如下:
转换为pdf格式,在转换时也报了一些错误,分析代码发现它去网络上获取东西,之前一直以为是这里的网络访问问题,后来将docx4j提供的所有的jar引入后,就可以访问了,所以并不是这个网络的问题,如下:
package cn.chendd.docx4j.examples;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.commons.io.FileUtils;
import org.docx4j.Docx4J;
import org.docx4j.convert.out.HTMLSettings;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
/**
* 文档格式转换
* @author chendd
*
*/
public class ConvertTest {
static String templatePath = System.getProperty("user.dir") + "/template/我的增量补丁整理软件.docx";
public static void main(String[] args) throws Exception {
//将docx文件转换为pdf文档
convertDocx2Pdf();
//将docx文件转换为html文档
// convertDocx2Html();
//将docx转换为doc文档
// convertDocx2Doc();
}
private static void convertDocx2Doc() throws Exception {
//将docx转换为符合doc格式规范的xml文档,再由xml更改后缀名为doc的方式达到docx转换doc格式的目的
File templateFile = new File(templatePath);
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateFile);
File outFile = new File(templateFile.getParent() + "/out/" , "我的增量补丁整理软件.xml");
Docx4J.save(wordMLPackage, outFile, Docx4J.FLAG_SAVE_FLAT_XML);//FLAG_SAVE_ZIP_FILE
outFile.renameTo(new File(outFile.getParentFile() , "我的增量补丁整理软件.doc"));
}
private static void convertDocx2Html() throws Exception {
File templateFile = new File(templatePath);
String name = "我的增量补丁整理软件.html";
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateFile);
HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
String folder = templateFile.getParent() + "/out/";
htmlSettings.setImageDirPath(folder + name + "_files");//生成的html文件与图片文件夹之类的放置同一个目录下
htmlSettings.setImageTargetUri(name + "_files");
htmlSettings.setWmlPackage(wordMLPackage);
File outFile = new File(folder , name);
Docx4J.toHTML(htmlSettings, new FileOutputStream(outFile), Docx4J.FLAG_NONE);
}
//转换为Pdf文件
private static void convertDocx2Pdf() throws Exception {
File templateFile = new File(templatePath);
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateFile);
File outFile = new File(templateFile.getParent() + "/out/" , "我的增量补丁整理软件.pdf");
Docx4J.toPDF(wordMLPackage, new FileOutputStream(outFile));
}
}
我的增量补丁整理软件.zip(html)
点赞