java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

您所在的位置:网站首页 asposepdfdll java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

2023-01-11 16:43| 来源: 网络整理| 查看: 265

前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!!

java转pdf目前本人使用有两种方法,下面是方法代码

ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己手动,也可以用微信或者qq直接提取文字,两种方法都可行,大家自己选择。

ps:word转pdf,文件必须是docx格式,docx和doc的区别可查看

docx和doc的区别

本人做的是预览功能,跟下载一个样,都是下载,只不过前端拿到pdf后,简单处理就可实现界面预览

一:docx4j转pdf

因为本人没有使用该方法,所以没有提取工具类,大家想代码整洁,可自己提取。

注意:这个方法本人使用的时候没有办法保留插图和图片,如果有这个需要,推荐第二个方法。

1.1先引入docx4j相关jar包 1.2docx4j转pdf代码实现

ps:

fontMapper.put("隶书", PhysicalFonts.get("LiSu")); 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("NSimSun")); fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai")); fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong")); fontMapper.put("仿宋", PhysicalFonts.get("FangSong")); fontMapper.put("幼圆", PhysicalFonts.get("YouYuan")); fontMapper.put("华文宋体", PhysicalFonts.get("STSong")); fontMapper.put("华文中宋", PhysicalFonts.get("STZhongsong")); fontMapper.put("等线", PhysicalFonts.get("SimSun")); fontMapper.put("等线 Light", PhysicalFonts.get("SimSun")); fontMapper.put("华文琥珀", PhysicalFonts.get("STHupo")); fontMapper.put("华文隶书", PhysicalFonts.get("STLiti")); fontMapper.put("华文新魏", PhysicalFonts.get("STXinwei")); fontMapper.put("华文彩云", PhysicalFonts.get("STCaiyun")); fontMapper.put("方正姚体", PhysicalFonts.get("FZYaoti")); fontMapper.put("方正舒体", PhysicalFonts.get("FZShuTi")); fontMapper.put("华文细黑", PhysicalFonts.get("STXihei")); fontMapper.put("宋体扩展", PhysicalFonts.get("simsun-extB")); fontMapper.put("仿宋_GB2312", PhysicalFonts.get("FangSong_GB2312")); fontMapper.put("新細明體", PhysicalFonts.get("SimSun")); //解决宋体(正文)和宋体(标题)的乱码问题 PhysicalFonts.put("PMingLiU", PhysicalFonts.get("SimSun")); PhysicalFonts.put("新細明體", PhysicalFonts.get("SimSun")); //宋体&新宋体 PhysicalFont simsunFont = PhysicalFonts.get("SimSun"); fontMapper.put("SimSun", simsunFont); //设置字体 mlPackage.setFontMapper(fontMapper);

注意:这个方法在window系统下没啥问题,但是如果是linux系统下部署就不行了,因为在linux系统下环境缺少这些字体,所以设置后还是没啥用,需要配置环境字体,下面是配置步骤。

1.3:linux环境下配置字体格式,防止乱码

(1)在linux(CentOS7)环境中新建文件夹/usr/share/fonts/win_font

(2)将C:\Windows\Fonts(win10)中的字体文件拷贝到/usr/share/fonts/win_font文件夹中

(3)加载字体文件,直接顺序执行命令

mkfontscale //字体扩展 mkfontdir //新增字体目录 fc-cache -fv //刷新缓存

(4)查看字体安装情况

fc-list :lang=zh

第一种方法结束。

二:荐:利用aspose解决word转pdf 前言:

该方法,需要下载aspose-words-15.8.0jar包,也可以是其它版本,然后引入进来,放到maven项目根目录lib文件夹下,也可以把jar包放到仓库,引入到pom文件,这个操作不会的话,自行百度,在此不多说。下面是实现word转pdf详情步骤。

2.1:下载asposejar包

本人提供的下载链接可以自己下载,也可以百度下载其它版本

百度网盘链接:

链接:https://pan.baidu.com/s/19Zev_2q17bVTWNqvpAG-ZQ 提取码:uqrk

2.2:引入jar包 2.2.1在项目根目录中创建一个lib文件,和src文件夹同级别 2.2.2引入本地jar包 com.aspose aspose-words 15.8.0 system ${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar 2.3配置License.xml

ps:为什么配置这个玩意呢,因为这个aspose转pdf后会带水印,配置License.xml就是去掉水印。

这个东西也可以百度,可以找到,下面贴出来的,是本人用的一个

2.3.1License.xml直接放到resources的根目录 Aspose.Total for Java Aspose.Words for Java Enterprise 20991231 20991231 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= 2.4word转pdf工具类 /** * @author : zhangbohao * description : Aspose工具类 */ public class AsposeUtil { /** * 加载license 用于破解 不生成水印 */ @SneakyThrows private static void getLicense() { try (InputStream is = AsposeUtil.class.getClassLoader().getResourceAsStream("License.xml")) { License license = new License(); license.setLicense(is); } } /** * word转pdf * * @param wordPath word文件保存的路径 * @param pdfPath 转换后pdf文件保存的路径 */ @SneakyThrows public static void wordToPdf(String wordPath, String pdfPath) { getLicense(); File file = new File(pdfPath); try (FileOutputStream os = new FileOutputStream(file)) { Document doc = new Document(wordPath); doc.save(os, SaveFormat.PDF); } } } 2.5代码具体使用

这样就可以完美导出pdf了

2.6项目打包问题

本地导入jar包的时候,springboot是不会给打进去的,所以pom需要配置一下

org.springframework.boot spring-boot-maven-plugin true

这样两种方法导出pdf都没啥问题了,祝大家工作顺利!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3