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 一共两种方法 |
前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!!
java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己手动,也可以用微信或者qq直接提取文字,两种方法都可行,大家自己选择。 ps:word转pdf,文件必须是docx格式,docx和doc的区别可查看 docx和doc的区别 本人做的是预览功能,跟下载一个样,都是下载,只不过前端拿到pdf后,简单处理就可实现界面预览 一:docx4j转pdf因为本人没有使用该方法,所以没有提取工具类,大家想代码整洁,可自己提取。 注意:这个方法本人使用的时候没有办法保留插图和图片,如果有这个需要,推荐第二个方法。 1.1先引入docx4j相关jar包![]() ![]() ![]() 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文件夹同级别![]() ![]() 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 |