**

最近有个需求是生成报表的同时需要提供word文档下载和PDF下载的功能,试了几款软件,最终选用Aspose.words工具,但是试用版会自动加水印和有页数限制,下附去水印教程和页数限制去除,方法实际操作通过,如果公司有预算可使用正版购买。

1、首先第一步需要下载对应的工具jar包,下方附下载地址
链接:https://pan.baidu.com/s/1bUIQPDjAfKKcvKmdpZzcKA?pwd=yyds
提取码:yyds

2、第二步需要配置本机maven环境变量,此步较为简单,忽略。最终结果如下

3、按win+R 输入 cmd 输入以下命令安装当前下载的jar包到maven本地仓库
mvn install:install-file -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=15.8.0 -Dpackaging=jar -Dfile=D:\aspose-words-15.8.0-jdk16.jar

4、单纯使用jar包还是不行,需要在项目resources下面新建一个license.xml文件。在后面使用时引用该文件,即可去掉水印,以及页数限制。

<?xml version="1.0" encoding="UTF-8" ?> Aspose.Total for Java Aspose.Words for Java Enterprise 20991231 20991231 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= ![在这里插入图片描述](https://img-blog.csdnimg.cn/098ea337119d44a98d6c8ba16cc7fec4.png)

5、具体使用方法
新建一个Word转Pdf的工具类

package com.alei.utils;import java.io.FileOutputStream;
import java.io.IOException;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;import java.io.File;
import java.io.InputStream;
/*** @author ShiLei* @create 2023-04-10 13:15* word转pdf工具类*/
public class WordToPdfAsposeUtil {private static final Logger logger = LoggerFactory.getLogger(WordToPdfAsposeUtil.class);/*** 获取aspose证书 去除水印以及页数限制* @auther: ShiLei* @date: 2023-04-10 13:15* @return boolean*/private static boolean getLicense() {boolean result = false;InputStream is = null;try {Resource resource = new ClassPathResource("license.xml");is = resource.getInputStream();License aposeLic = new License();aposeLic.setLicense(is);result = true;} catch (Exception e) {logger.error("获取证书失败:{}", ExceptionUtils.getStackTrace(e));e.printStackTrace();}finally {if (is != null) {try {is.close();} catch (IOException e) {logger.error("流关闭异常:{}", ExceptionUtils.getStackTrace(e));e.printStackTrace();}}}return result;}/*** word转pdf静态方法* @auther: ShiLei* @date: 2023-04-10 13:15* @param inPath word文件全路径含文件名* @param outPath pdf输出全路径含文件名* @return boolean*/public static boolean docToPdf(String inPath, String outPath) {// 验证License 若不验证则转化出的pdf文档会有水印产生if (!getLicense()) {return false;}FileOutputStream os = null;try {long old = System.currentTimeMillis();// 新建一个空白pdf文档File file = new File(outPath);os = new FileOutputStream(file);// inPath是将要被转化的word文档Document doc = new Document(inPath);// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换doc.save(os, SaveFormat.PDF);long now = System.currentTimeMillis();// 转化用时logger.info("word转换pdf成功,共耗时:" + ((now - old) / 1000.0) + "秒");} catch (Exception e) {logger.error("word转pdf失败:{}", ExceptionUtils.getStackTrace(e));return false;}finally {if (os != null) {try {os.flush();os.close();} catch (IOException e) {logger.error("流关闭异常:{}", ExceptionUtils.getStackTrace(e));e.printStackTrace();}}}return true;}public static void main(String[] args) {System.out.println(docToPdf("D:\\abc.docx", "D:\\abc.pdf"));}
}

6、引入对应的依赖,运行main方法,最终查看对应路径下是否生成

<dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version><classifier>jdk16</classifier>
</dependency>



注意注意注意
当前代码在Windows下运行正常,无任何问题。是因为Windows下默认支持中文字体库,Linux下运行会存在格式或者乱码问题,解决办法如下:
1、前往Windows的C:\Windows\Fonts 将下面的字体库全部拷贝到Linux的目录下
2、 将字体库上传至部署的Linux机器目录下(/usr/share/fonts)
3、 新建文件夹 windows,字体库上传至windows文件夹中
mkdir windows (创建文件夹)
4、 进入windows目录下设置当前字体库的权限
sudo chmod 755 /usr/share/fonts/windows/*
5、 接着根据当前目录下的字体建立scale文件
sudo mkfontscale
6、 接着建立dir文件(如果存在报错请忽略)
sudo mkfontdir
7、然后运行
sudo fc-cache
8、重启服务
至此解决Linux下运行乱码格式错乱问题

至此转换结束,我目前实现方式是通过流方式将word下载到本地文件夹,转换pdf上传对应目录,然后将本地文件夹删除(因为word是之前就生成过对应的文件服务器,所以使用本地做一层转换)

Java使用第三方工具包将word转换为PDF文件相关推荐

  1. 如何将Word转换为PDF文件?一篇完整的指南

    在现代办公和学习中,我们常常需要将Word文档转换为PDF格式,以便更好地分享和保护文件内容.下面是一篇完整的指南,教你如何将Word文档转换为PDF文件,并提供两种不同的途径. 途径一:使用Micr ...

  2. winform实现word转换为PDF(.doc)

    注意:实现word转换为PDF文件,本人安装Office为2013; word以后缀为.doc为例实现文件类型转换,具体方式如下所示: 实现步骤: 1.添加命名空间引用--using Microsof ...

  3. 实现Word转Pdf文件

    在项目中需要以Word文件为模板,填充指定数据,并转换为Pdf文件.可以分为两步,第一步使用POI进行文本替换,第二步把替换后的Word转换为pdf文件. 当前遇到的问题是网上所有的转换工具依赖的包都 ...

  4. 在Ubuntu环境把PPT和Word转换为swf文件

    项目需要一个在线浏览文档的功能,于是参照网上的代码写了一份利用Microsoft Office 2010和swftools-2013-04-09-1007.exe转换的程序 思路:调用电脑本机的off ...

  5. (五)java项目中的文档转换案例实战——Word转换为PDF

    前言 由于在开发中需要适配不同的多端应用,在文件相关处理中也会存在相同的问题,需要将文档转换为不同的格式展示,本节我们主要通过一个小案例实现在java环境下实现Word2003(doc). Word2 ...

  6. 如何通过Java将Word转换为PDF

    Word是我们日常编辑文档内容时十分常用的一种文档格式.但相比之下,PDF文档的格式.布局更为固定,不易被更改.在保存或传输较为重要的文档内容时,PDF文档格式也时很多人的不二选择.很多时候我们都会遇 ...

  7. Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片

    将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...

  8. poi对word读取(文本和图片)、修改、保存操作及word转换为PDF

    word转换为PDF时要引入maven依赖 <dependency><groupId>com.documents4j</groupId><artifactId ...

  9. java 将word转为pdf文件的两种方式【spire.doc.free】【documents4j】

    场景 如资产证明等场景下,一般要求同时生成word与pdf两种格式的证明文件,且两者格式需保持一致,可以各自单独生成,但那样可能需要维护两个模板文件,所以也可以仅定义一份word的模板文件,使用模板生 ...

最新文章

  1. mysql router docker_Docker镜像瘦身 - SegmentFault 思否
  2. python用中文怎么说-如何用Python做中文分词?
  3. 下载MySQL并创建桌面数据库_sql桌面数据库
  4. web 界面设计 Axure元件样式
  5. ExecutorService——shutdown方法和awaitTermination方法
  6. Mysql高性能优化技能总结
  7. cocos2dx基础篇(26)——场景切换CCTransitionScene
  8. 3 pyspark学习---sparkContext概述
  9. 最真挚的祝福最深的伤
  10. oracle数据库top用法,Oracle TOP SQLHIT
  11. 搭建本地LNMP开发环境(2.5)-安装vim
  12. Rust :rustup的版本更新功能
  13. Excel 表格打印篇(批量添加标题,同页打印,打印logo与页码)
  14. 蓝桥杯2021年第十二届真题第一场-双向排序
  15. vscode报错Failed to save ***,The content of the file is newer.
  16. Class热替换与卸载
  17. Centos安装pstree
  18. windows10 原版 纯净版 下载
  19. RPA-机器人流程自动化
  20. 我觉得好听的曲子-持续更新中

热门文章

  1. python之扑克牌小游戏
  2. 适合大学生的创业项目 校园综合跑腿服务微信小程序kyuan源码
  3. 抖音小店保证金多少?2023最新收费标准,新手快看过来!
  4. (ICCV-2017)可变形卷积网络
  5. 思科、华为、H3C常用命令对比大全
  6. MAF: ProviderChangeSupport PropertyChangeSupport
  7. go run undefined
  8. 各种颜色发光二极管的工作电压
  9. n个点坐标解三角形个数
  10. 网线中哪几根真正有用?