http://www.chendd.cn/information/viewInformation/other/260.a

在继本篇文章后,关于docx4j的知识点要完结了,个人认为已经实现了企业级应用中的绝大多数的高端应用的具体实现,另外更多的一些具体实现不准备继续下去了,如果后面有需求实现了再补充。

关于docx文档的转换,常用到的我觉得是这三种:docx转换为doc、docx转换为html、docx转换为pdf,就这三种,本例也是将docx4j中提供的这三种给整理了一下,源文件是之前写的一份word文档《我的增量补丁整理软件》(介绍一款增量补丁自动化的软件实现),文中内容含有不同格式的字体、样式、文本缩进、间距、颜色、图片等系列相关的内容,转换后的效果也是比较好的,参考输出的内容如下:

转换为pdf格式,在转换时也报了一些错误,分析代码发现它去网络上获取东西,之前一直以为是这里的网络访问问题,后来将docx4j提供的所有的jar引入后,就可以访问了,所以并不是这个网络的问题,如下:

转换为doc格式

转换为html格式

代码参考

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));

}

}

相关下载

docx4j doc转html,11、docx4j生成文档格式转换相关推荐

  1. JavaSE(08)-Java包机制+Doc生成文档

    Java包机制+Doc生成文档 包机制 简述: 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间 语法格式: ​ package pkg1[.pkg2[.pkg3-]]; 一般利用公司域 ...

  2. t通过数据库逆向生成文档工具——screw

    目录 一.pom.xml准备 二.工具类配置及生成 三.导出示例(html) 四.说明 目标 将数据库表字段分表生成表单,自动对应表字段以及注释,可导出为 html | doc | md 文件 一.p ...

  3. Objective-C自动生成文档工具:appledoc

    作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...

  4. Objective-C 自动生成文档工具:appledoc

    来源:iOS_小松哥 www.jianshu.com/p/fd4d8d6b6177 如有好文章投稿,请点击 → 这里了解详情 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective ...

  5. 快速优雅的为React组件生成文档

    在开发React组件时我们通常需要处理2个问题: 实例化这个组件以便调试 为这个组件编写使用文档以便更好的让别人知道怎么使用这个组件 最原始的方法莫过于开发时建一个页面用于调试,开发完后再为其手写文档 ...

  6. linux c/c++ 代码使用 doxygen 自动生成文档

    www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...

  7. java动态生成sdk_android、java制作sdk以及自动生成文档

    最近一直在做android开发,昨天经理让我写个接口SDK做个接口文档,以便后面的开发. 这让我很焦灼,SDK怎么做?要是只有敲代码还好.可是那个接口文档!!!文档这东西最讨厌了,头都大了 后来查了下 ...

  8. java如何写安卓接口文档_android、java制作sdk以及自动生成文档

    最近一直在做android开发,昨天经理让我写个接口SDK做个接口文档,以便后面的开发. 这让我很焦灼,SDK怎么做?要是只有敲代码还好.可是那个接口文档!!!文档这东西最讨厌了,头都大了 后来查了下 ...

  9. java 自动生成文档_[原]java开发文档的自动生成方式

    对于Java注释我们主要了解三种: // 注释一行 /* ...... */ 注释若干行 第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写 ...

  10. python使用sphinx自动生成文档

    python代码注释风格有很多,比较主流的有reStructuredText风格.numpy风格.google风格,pycharm默认提示reStructuredText风格 reStructured ...

最新文章

  1. Myeclipse安装、配置、测试
  2. matlab gui数据类型,MatLab GUI 数据传递
  3. Py之minepy:minepy的简介、安装、使用方法之详细攻略
  4. 电子科大专科c语言作业1,电子科大15春《C语言(专科)》在线作业试卷.docx
  5. 转:Session,有没有必要使用它?
  6. jQuery.unique引发一个血案
  7. M1 :Mac已可使用Parallels Desktop 16支持Windows
  8. PHP如何在照片下面写一行字_如何使用php分别插入照片和文字?
  9. Visio软件方案UML选择
  10. easyRobot工业机器人系统
  11. Django默认用户模型类和父类 AbstractUser 介绍
  12. 台式计算机显示不了无线网络,我是台式电脑,插上无线网卡怎么我的链接里不显示无线...
  13. 微型计算机是第四代计算机的产物,计算机的发展已经过了4代,其中()是第四代计算机 - 问答库...
  14. linux进程地址空间内核,菜鸟求问linux进程地址空间问题
  15. matlab仿真平台式惯导
  16. EXECL日期相减计算工龄
  17. 感知复合型人才的重要性!
  18. PostgreSQL查询 动态输入参数
  19. elementui级联选择器
  20. git向多个分支push

热门文章

  1. PYTHON Image Module中Pix[x,y]详解
  2. NOI模拟(5.8) HNOID2T3 道路 (bzoj5290)
  3. 【简历模板】网站推荐
  4. 计算机硬盘的常用分区工具,常用的几款分区合并工具推荐,合理使用电脑硬盘...
  5. MySQL基础教程4-SQL基础概念
  6. 二、自然语言处理发展历程
  7. C# TCP通讯大族激光打标机
  8. 扩展欧几里得算法求逆元c语言,利用扩展欧几里得算法编程求逆元
  9. 如何制作BAT(Windows批处理文件)病毒
  10. TCP通讯知识点总结