首页 > 编程语言 >java 实现根据word模板生成word文件 word转pdf

java 实现根据word模板生成word文件 word转pdf

时间:2024-02-27 16:26:27浏览次数:29  
标签:xml 文件 word java pdf document 替换

最近做项目 要求生成word文件及PDF文件,生成word文件时其中内容要根据不同公司提供的内容动态替换里面的值。参考了很多之后选择用word模板生成word文件。

其中主要参考:https://www.cnblogs.com/suzan/p/10577738.html

 简单的word模板:https://files.cnblogs.com/files/blogs/809524/title.zip?t=1709017146&download=true

生产wode文档用的是freemarker方式

1.要先有一个word文档,如上需要动态替换的内容用英文替换(其中汉字最好用宋体,因为word转pdf的时候会乱码,但是我用的方式微软雅黑也可以转pdf,其中图片也是可以替换的)

2.有了word文档后(要用.docx文件不要用.doc 文件),将后缀直接改为.zip,改后解压看到如下形式文档。

3.将word下document.xml修改,主要就是替换英文为带括号形式,图片如果没有64位编码就看下word/media 图片就明白了,这个文件夹下就是模板中所有图片,如果我们后续需要替换其中某张图片再java中获取到文件流然后直接替换即可。

4.改完document.xml后复制一份到本地(document本地.xml),然后到步骤2文件夹下重新压缩为zip文件--此时我们有一个改了document文件的zip文件及一份新的document文件。

5.有了两个模板文件就是java实现,主要思想是用freemarker把document本地.xml 当成模板,然后将后台数据渲染到这个xml中,然后替换zip中的document.xml.替换图片也是同理。

6.这时下载出来的word文档就是替换文字及图片后的word.docx文件。

因为这里生成了word文件而word和PDF内容格式肯定要求是一样的,所以第一反应就是将word转为PDF,以下就是word转pdf的过程。

1.word转pdf要求是不失真,免费

2.网上推荐的方式有 itexpdf(失真很厉害用不成);

         poi包方式(各种包的报错,Poi引用的一些类包里没有,将其他包引入后这些包又有引用类没有,解决不完,用不成);

           docx4j(比上面两种好一些,但是也失真厉害达不到生产使用的标准,生成pdf的时间也长)

         aspose-words(pj 版包,效果不错)

3. aspose-words方式需要lincense.xml要不有水印,图片文字都不失真,推荐。

4.整体思想是用前一步骤生成word文件然后转pdf,然后删除word文件。

有需要代码的私聊吧。

 

标签:xml,文件,word,java,pdf,document,替换
From: https://www.cnblogs.com/haoming-1/p/18036850

相关文章

  • 如何使用ilovepdf将PDF转换成word?
    我们在办公或学习过程中经常会遇到需要PDF编辑内容的情况,但PDF修改起来特别麻烦,那么这个时候就需要用到PDF转Word。那么,如何将pdf怎么转换成word?ilovepdf中文版是一款免费的在线转换工具,下面说一说如何使用它实现PDF转word。首先在浏览器搜索ilovepdf或直接打开提前收藏的链接进......
  • 高效的PDF文字提取技术
    无论是行政法规、学术论文还是企业合同,PDF文档为我们提供了一种便捷、稳定的信息传递方式。然而,从PDF文件中提取文本信息对于数据分析、内容编辑等后续处理来说至关重要。PDF文本提取技术是一种可以从各类PDF文档中准确抽取文字的技术手段。无论是书籍、报告、信件,该技术都能够通......
  • Pageoffice6 实现后台生成单个PDF文档
    在实际项目中经常遇到这样的场景,客户希望后台动态生成PDF文档,目前网上有一些针对此需求的方案,如果您想要了解这些方案的对比,请查看后台生成单个Word文档中的“方案对比”。PageOffice针对此需求开发了FileMaker组件,该组件完全符合PageOffice的架构设计,FileMaker在客户端动......
  • 数据提取PDF SDK的对比推荐
    PDF已迅速成为跨各种平台共享和分发文档的首选格式,它作为一种数据来源,常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息,我们需要检测和提取PDF中的数据,并将其转换为可用且有意义的格式。而数据提取的PDFSDK,可以集成在应用程序或内部系统中,能更加有效地提高......
  • Java中使用Graphics2D实现图片添加文字/图片水印
    场景java实现给图片添加水印实现步骤:获取原图片对象信息(本地图片或网络图片)添加水印(设置水印颜色、字体、坐标等)处理输出目标图片。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、新建工具类 importorg.apache.commons.lang3.StringUtils;importjavax.im......
  • Java 中 MessageFormat.format 用法
    转载自:https://blog.csdn.net/xiaokui_wingfly/article/details/46124057 查看原文:http://www.ibloger.net/article/139.htmlMessageFormat本身与语言环境无关,而与用户提供给MessageFormat的模式和用于已插入参数的子格式模式有关,以生成适用于不同语言环境的消息。Mes......
  • java 通过 microsoft graph 调用outlook
    废话不多说一官方文档先看一下官方文档,https://learn.microsoft.com/zh-cn/graph/tutorials/java?context=outlook%2Fcontext&tabs=aad&tutorial-step=1其中的代码,可以通过地址下载:https://developer.microsoft.com/en-us/graph/quick-start 二授权方式microsoft登录授权......
  • Java面向对象之接口和抽象类的区别一目了然
    介绍相信对于Java面向对象部分,很多人很长一段时间对于接口和抽象类的区别,使用场景都不是很熟悉,同是作为抽象层重要的对象,工作中到底什么情况下使用抽象类,不是很清楚。本文就一次性把这些概念一次性说清楚,不用再烦恼了,哈哈!核心概念接口与抽象类最明显的区别可能就是使用上的......
  • java读取resource下的文件 下载
    点击查看代码publicvoiddownloadKsxxYzyTemplate(HttpServletRequestrequest,HttpServletResponseresponse){try{//FileDownloadUtils.downloadFileFromResource(response,YZYMB_NAME,YZYMB_URL);FileDownloadUtils.downloadFileFro......
  • C#与Java的继承与实现上的差异
    虽然C#和Java都支持继承和接口实现这两种面向对象编程的基本概念,但它们在一些细节上有一些差异。继承(Inheritance)单继承vs多继承:C#支持单继承,一个类只能直接继承自一个父类。Java也支持单继承,一个类只能直接继承自一个父类。基类构造函数的调用:在C#中,如果......