word的xml 转换为 docx

本文介绍了如何使用Freemarker将XML转换为docx文档,并通过xdocreport库将docx转换为PDF。作者分享了一个GitHub工程,详细展示了将Word模板填充变量并生成PDF合约的过程,适合处理复杂文档和样式。
摘要由CSDN通过智能技术生成
               


本文转自:::http://hucheng91.github.io/2017/04/09/web/java/freemarker_xdocxreport/

//================================转者附注释=====================================

最近有个问题是,通过freemarker生成的word出现了问题,因为是先把word转换为xml作为模板填充的文件,所以生成的doc的底层还是xml格式的,openoffice转换为的pdf出现了pdf中全是xml格式的问题,后面经过发现了下面这篇博文,完美的解决了我们的问题。

注:我们使用的openoffice,没有使用xdoxreport。这个性能不是很好。所以下面删除了有关xdoxreport的内容

//================================结束==========================================

最近公司有个业务,是要生成pdf形式的合约,合约模版是有十几页的word,根据不同的客户,模版有些地方填入不同的值,然后生成pdf格式的合约。最开始打算用JasperReports,先把这个模版画出来,但是由于模版页数太多,样式很复杂,JasperReports处理起来简直就是噩梦,果断放弃,随后我又调研了doc4j,openoffice;doc4j处理复杂文档也不是太好,加粗的字体都没有显示出来,对office2013不怎么支持,openoffice得单独装一个服务端,很是耗资源,也放弃了;最后我选择了先用freemarker将模版变量填入生成一个docx,在用xdocreport这个库来将docx转换成pdf,成功的实现了,支持office的2007,2013等,而且docx样式也完全保留下来,而且整个过程非常快,不怎么耗费资源,内存;

先介绍下freemarke

  • freemarker是java里一个模版框架,和ve
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,你可以使用Apache POI库来将XML格式的Word文档转换DOCX格式。下面是一个简单的示例代码: ```java import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class XMLToDOCXConverter { public static void main(String[] args) { try { // 读取XML格式的Word文档 InputStream inputStream = new FileInputStream("input.xml"); // 创建新的DOCX格式的Word文档 XWPFDocument document = new XWPFDocument(); XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); // 读取XML中的内容,并写入DOCX文档 // 这里假设XML中只有一个段落 byte[] buffer = new byte[inputStream.available()]; inputStream.read(buffer); String xmlContent = new String(buffer); run.setText(xmlContent); // 保存为DOCX文件 OutputStream outputStream = new FileOutputStream("output.docx"); document.write(outputStream); // 关闭流 outputStream.close(); inputStream.close(); System.out.println("转换完成!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,你需要将`input.xml`替换为你要转换XML文件的路径。转换后的DOCX文件将保存为`output.docx`。 请注意,这只是一个简单的示例代码,如果你的XML格式与Word文档的结构有所不同,你可能需要进行更多的处理和逻辑来正确解析和转换XML内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值