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

news/2024/11/23 2:03:14/

前言:一共有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包

        <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version><scope>system</scope><systemPath>${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar</systemPath></dependency>

2.3配置License.xml

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

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

2.3.1License.xml直接放到resources的根目录

<License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>

2.4word转pdf工具类

/*** @author : zhangbohao* description : Aspose工具类*/
public class AsposeUtil {/*** 加载license 用于破解 不生成水印*/@SneakyThrowsprivate 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文件保存的路径*/@SneakyThrowspublic 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需要配置一下

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 将本地jar一起打包 --><configuration><includeSystemScope>true</includeSystemScope></configuration>     </plugin></plugins>
</build>

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


http://www.ppmy.cn/news/355331.html

相关文章

css设置各种中文字体如雅黑、黑体、宋体、楷体等

.selector{ font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STHeiti,MingLiu } css如何设置各种中文字体如雅黑、黑体、宋体、楷体等等 说明&#xff1a; 加上中文名“微软雅黑”是为了兼容opera。 MicrosoftJhengHei为微软正黑体…

java中如何设置字体样式_如何在JAVA中设置字体样式和大小?

我是新来的Java和无法弄清楚如何格式化我的代码是这样的: 字体“宋体”字体大小“9”大胆如何在JAVA中设置字体样式和大小? 我想整个段落的格式化文本。我真的很感谢帮助。提前致谢! 下面是我的代码: public class H_1 {//-----------------------------------------------…

中英文字体对照 ueditor添加字体

ueditor添加字体修改个地方 editor-config.js ,fontfamily:[{ label:,name:songti,val:宋体,SimSun},{ label:,name:kaiti,val:楷体,楷体_GB2312, SimKai},{ label:,name:yahei,val:微软雅黑,Microsoft YaHei},{ label:,name:heiti,val:黑体, SimHei},{ label:,name:lishu,val:…

CSS font-family 各名称一览表

&#xff08;小米米官网&#xff09;&#xff1a;font-family: "Arial","Microsoft YaHei","黑体","宋体",sans-serif; &#xff08;淘宝技术研发中心&#xff09;&#xff1a;font: 12px/1.5 Tahoma,Helvetica,Arial,宋体,sans-seri…

关于永中Office(永中办公软件)不认Windows系统安装的字体的解决办法

一位网友的电脑最近安装了永中Office软件&#xff0c;在使用过程中发现无法使用方正小标宋简体、仿宋GB2312等字体&#xff0c;这些字体在之前所用的微软Office中可以正常使用。他根据网上查到的一些的资料&#xff0c;将这些字体文件复制到C:\Program Files\Yozosoft\Yozo_Off…

表格标题中方正小标宋简体为什么显示不一样?

方正小标宋简体是学校表格大标题常用的字体&#xff0c;但是在WPS或者是Word中设置了该字体之后&#xff0c;打开来发现&#xff0c;实际的字体和显示的却是不同的&#xff08;如下图&#xff09;&#xff0c;本人也遇到了这个问题&#xff0c;已解决&#xff0c;所以来分享一下…

2023前端面试题第二弹(真实,一般人我还不给看)

为什么要初始化css&#xff1f; 避免浏览器差异&#xff0c;解决兼容问题 网格布局 display: grid; grid-template-columns: 1fr 1fr 1fr less的优点 可以兼容&#xff0c;可以嵌套&#xff0c;循环&#xff0c;运算&#xff0c;定义变量和继承样式&#xff08;extend&#xff…

示波器哪个品牌好?

示波器选型指南 1.带宽&#xff1a;带宽是示波器的重要指标之一&#xff0c;和放大器带宽定义相同&#xff0c;即所谓-3dB点&#xff0c;在示波器输入端输入正弦波信号时&#xff0c;幅度衰减至原信号幅度的0.707 倍的那个频率点&#xff0c;称之为示波器带宽。也就是说&#x…