使用docx4j 实现word转pdf

1.引入maven依赖
     <dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version>6.1.2</version></dependency><dependency><groupId>org.docx4j</groupId><artifactId>docx4j-export-fo</artifactId><version>8.1.1</version></dependency>
2.代码实现
import lombok.extern.slf4j.Slf4j;
import org.docx4j.Docx4J;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.Mapper;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;import java.io.File;
import java.io.FileOutputStream;/*** @description: word文档操作utils* @author: wzg* @create: 2021-12-16**/
@Slf4j
public class WordToPdf {public static void main(String[] args) throws Exception {WordToPdf.convertDocxToPdf("/data/doc/2021-12-17/word1639704593928.doc","/data/pdf/2021-12-17/pdf1639704593928.pdf");}/*** doc文档转换为PDF** @param docxPath word文档路径* @param pdfPath PDF文档存储路径* @throws Exception */public static void convertDocxToPdf(String docxPath, String pdfPath) throws Exception {FileOutputStream fileOutputStream = null;try {File docFile = new File(docxPath);File pdfFile = new File(pdfPath);WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(docFile);setFontMapper(mlPackage);fileOutputStream = new FileOutputStream(pdfFile);Docx4J.toPDF(mlPackage, fileOutputStream);}catch (Exception e){e.printStackTrace();log.error("doc文档转换为PDF失败");}finally {fileOutputStream.flush();fileOutputStream.close();}}/*** 字体设置* @param mlPackage* @throws Exception*/private static void setFontMapper(WordprocessingMLPackage mlPackage) throws Exception {Mapper fontMapper = new IdentityPlusMapper();//fontMapper.put("隶书", PhysicalFonts.get("LiSu"));fontMapper.put("宋体", PhysicalFonts.get("SimSun"));fontMapper.put("宋体(中文正文)", PhysicalFonts.get("SimSun"));//fontMapper.put("微软雅黑", PhysicalFonts.get("Microsoft Yahei"));fontMapper.put("黑体", PhysicalFonts.get("SimHei"));//fontMapper.put("楷体", PhysicalFonts.get("KaiTi"));fontMapper.put("等线", PhysicalFonts.get("SimSun"));fontMapper.put("等线 Light", PhysicalFonts.get("SimSun"));fontMapper.put("新宋体", PhysicalFonts.get("NSimSun"));//fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai"));//fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong"));//fontMapper.put("宋体扩展", PhysicalFonts.get("simsun-extB"));fontMapper.put("仿宋", PhysicalFonts.get("FangSong"));//fontMapper.put("仿宋_GB2312", PhysicalFonts.get("FangSong_GB2312"));//fontMapper.put("幼圆", PhysicalFonts.get("YouYuan"));//fontMapper.put("华文宋体", PhysicalFonts.get("STSong"));//fontMapper.put("华文中宋", PhysicalFonts.get("STZhongsong"));//解决宋体(正文)和宋体(标题)等的乱码问题PhysicalFonts.put("PMingLiU", PhysicalFonts.get("SimSun"));PhysicalFonts.put("新細明體", PhysicalFonts.get("SimSun"));mlPackage.setFontMapper(fontMapper);}}
3.docx4j部署linux乱码处理

​ 3.1 复制windows的C:\Windows\Fonts\下的所有字体库,放在桌面的fonts文件夹里。

​ 3.2 使用xshell 将桌面上的fonts文件夹里的字体库,全部放入 /usr/share/fonts/chinese 文件夹下,如果文件夹不存在,手动创建。

​ 3.3 给文件夹下的文件授权

chmod 775 /usr/share/fonts/chinese

3.4 建立字体缓存库

cd /usr/share/fonts/chinesesudo mkfontscalesudo mkfontdirsudo fc-cache -fv

使用docx4j 实现word转pdf(linux乱码处理)相关推荐

  1. Java word转pdf Linux/windows跨平台 格式完美(利用命令行调用libreoffice)

    参考了里面的libreoffice的用法:https://blog.csdn.net/qwert678000/article/details/72770109 需求描述 最近在做word报表的自动生成 ...

  2. php word转pdf linux,Linux平台中使用PHP把word转pdf的实现方法

    Linux平台中使用PHP把word转pdf的实现方法 1.ubantu下安装libreofficesudo apt-get install libreoffice 2.命令行执行word转pdf 将 ...

  3. Linux环境aspose插件word转pdf中文乱码解决方案

    目录 1 问题描述 2 问题原因 3 解决方案1:环境解决 4 解决方案2:代码解决 1 问题描述 在centos服务器使用aspose.word转换word文件为pdf的时候显示中文乱码,但是在wi ...

  4. aspose word 转pdf中文乱码_pdf转word——都是乱码!怎么办

    就一般使用者的理解,pdf可以分为两种,一种是图片版pdf,一种是文字版pdf.图片版pdf,比较典型的是通过扫描得到的pdf文件,特点是每张pdf就是一张图片,上面的文字信息是不可直接复制的,如下图 ...

  5. aspose word转pdf 中文乱码

    aspose word.excel转pdfwindows正常  服务器中文乱码 原因:服务器缺少中文字库 # 刷新字体缓存 fc-cache # 查看所有字体 fc-list # 查看所有中文字体 f ...

  6. aspose将word转pdf时乱码,或者出现小方框问题

    通常来讲,出现这种问题一般是因为Linux服务器没有安装中文字体 查看Linux目前的所有字体 fc-list #查看Linux目前的所有中文字体 fc-list :lang=zh #将windows ...

  7. itext pdf linux 乱码,iTextSharp读取pdf内容为乱码

    private string ReadPpf() { string fn = @"E:\PDFReaderTest\article\C#从入门到精通.pdf"; PdfReader ...

  8. openoffice将word转pdf中文乱码或消失的坑

    将windows系统下的中文字体文件(C:\Windows\Fonts),放到/usr/share/fonts下,必须重启openoffice. 转载于:https://www.cnblogs.com ...

  9. java word转pdf在linux系统上可行

    最近项目需要做在线预览文档功能,要求对上传的word文档后台转为pdf,遇到了很多问题,因此记录一下. 最开始我使用document4j实现了正常的转换,但在服务器上却报错,查看了日志才发现docum ...

最新文章

  1. 使用netty搭建一个简单的聊天室
  2. Sentinel介绍和Windows下安装Sentinel-dashboard
  3. 牛客网 【每日一题】5月21日题目 图的遍历
  4. (二十)python 3 匿名函数
  5. 2021年,AI哪个方向最火?看看大神们怎么说
  6. 男人有钱还是没钱,只需要关注他这三点,就明白了
  7. 游戏开发之测试篇2(C++)
  8. 全球系留无人机系统行业调研及趋势分析报告
  9. 大数据实训:实验二-基本SQL练习
  10. Apabi Reader for iOS正式发布 全面支持“苹果”(iPad/iPhone/iPod Touch)家族
  11. 一纬度横直线等于多公里_【地理】高中地理必修一知识点总结,考前必看
  12. 【JZOJ5336】【NOIP2017提高A组模拟8.24】提米树
  13. 《设计心理学》学习笔记之日常的设计(第一册)
  14. 探访厦航飞机女“医生” 有机务“熊猫”美誉
  15. RAID介绍及RAID5配置实例(超详细)
  16. [转]一个IT人的辞职信:怀着梦想去远行!
  17. NSCalendar 日历类
  18. 面试官:你能说一下 什么是熔断?什么是服务降级吗?
  19. 加州房价--决策树与随机森林
  20. 谷歌浏览器(chrome)无法正常打开网页的解决办法

热门文章

  1. [HNOI2004]宠物收养所 SBT
  2. 5年经验Java程序员面试20天,拿下数个offer,总结出的经验感想!
  3. python人脸头发身体部位识别人数统计
  4. linux使用matlab
  5. Python 之return 自定义返回值
  6. Oracle 11g 学习笔记-14(数据库性能优化)
  7. java 事件链_Java设计模式——责任链模式(Chain of Responsibility)
  8. 关于Datatable删除行和删除列
  9. python接口自动化-token
  10. 教务系统一键评教案例分析