使用Java实现Word文件转PDF文件
创始人
2025-01-09 18:07:25
0

1.场景

  不知大家有没有注意到,在开发工作中,我们或多或少都会接触到文档,不管是开发文档,还是用户手册,都会跟文件打交道,对于使用系统的用户来说,文件要下载再打开会比较繁琐,而且会比较耗磁盘空间,很多时候用户直观地想预览这个文件,Word不支持预览,这个就需要将Word转换为PDF格式才能进行预览,但市面上很多转换的都是商业软件,但这拦不到一个想搞技术的程序猿,在此我分享一个我常用的Word转PDF的方法,希望对你们有用。

2.环境准备

  这提供几个转换的Jar包,用来转换pdf的(我使用的是springboot框架,因此用上了Maven仓库,把jar包已经导入了Maven仓库,在下面我会将jar导入到Maven中的命令写出来)

		             aspose             aspose-words             15.8.0-jdk16                               aspose             aspose-slides             19.3          

  jar包的网盘链接和提取码

链接:https://pan.baidu.com/s/1J1BPC7J5_KG_OEx8w98V2w?pwd=7284  提取码:7284  --来自百度网盘超级会员V6的分享 

  如何将jar包导入本地Maven仓库,命令如下:

mvn install:install-file -Dfile=刚下载的jar包的位置 -DgroupId=依赖里写的groupId -DartifactId=依赖里写的artifactId -Dversion=上面的version -Dpackaging=jar 示例: mvn install:install-file -Dfile=F:\项目\文件预览\lib\aspose-words-15.8.0-jdk16.jar -DgroupId=aspose -DartifactId=aspose-words -Dversion=15.8.0-jdk16 -Dpackaging=jar 

  准备工作已完成,开始上代码。

3.项目代码

  引入springboot依赖和aspose依赖:

		             aspose             aspose-words             15.8.0-jdk16                               aspose             aspose-slides             19.3                                org.springframework.boot             spring-boot-starter-web          

  创建一个工具类,封装word转pdf的操作方法,业务代码去调用这个接口即可:

import com.aspose.words.Document; import com.aspose.words.License; import com.aspose.words.SaveFormat;  import java.io.*;  /**  * word转pdf工具类  *  * @author shmily  */ public class Word2PdfUtil {      /**      * 许可证字符串(可以放到resource下的xml文件中也可)      */     private static final String LICENSE = "" +             "" +             "Aspose.Total for JavaAspose.Words for Java" +             "Enterprise" +             "20991231" +             "20991231" +             "8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7" +             "" +             "sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=" +             "";       /**      * 设置 license 去除水印      */     private static void setLicense() {         ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(LICENSE.getBytes());         License license = new License();         try {             license.setLicense(byteArrayInputStream);         } catch (Exception e) {             e.printStackTrace();         }     }       /**      * word 转 pdf 生成至指定路径,pdf为空则上传至word同级目录      *      * @param wordPath word文件路径      * @param pdfPath  pdf文件路径      */     public static void wordConvertPdfFile(String wordPath, String pdfPath) {         FileOutputStream fileOutputStream = null;         try {             pdfPath = pdfPath == null ? getPdfFilePath(wordPath) : pdfPath;             setLicense();             File file = new File(pdfPath);             fileOutputStream = new FileOutputStream(file);             Document doc = new Document(wordPath);             doc.save(fileOutputStream, SaveFormat.PDF);         } catch (Exception e) {             e.printStackTrace();         } finally {             try {                 assert fileOutputStream != null;                 fileOutputStream.close();             } catch (IOException e) {                 e.printStackTrace();             }          }     }       /**      * word 转 pdf 生成byte字节流      *      * @param wordPath word所在的目录地址      * @return      */     public static byte[] wordConvertPdfByte(String wordPath) {         ByteArrayOutputStream fileOutputStream = null;         try {             setLicense();             fileOutputStream = new ByteArrayOutputStream();             Document doc = new Document(wordPath);             doc.save(fileOutputStream, SaveFormat.PDF);             return fileOutputStream.toByteArray();         } catch (Exception e) {             e.printStackTrace();         } finally {             try {                 assert fileOutputStream != null;                 fileOutputStream.close();             } catch (IOException e) {                 e.printStackTrace();             }          }         return null;     }        /**      * 获取 生成的 pdf 文件路径,默认与源文件同一目录      *      * @param wordPath word文件      * @return 生成的 pdf 文件      */     private static String getPdfFilePath(String wordPath) {         int lastIndexOfPoint = wordPath.lastIndexOf(".");         String pdfFilePath = "";         if (lastIndexOfPoint > -1) {             pdfFilePath = wordPath.substring(0, lastIndexOfPoint);         }         return pdfFilePath + ".pdf";     }  }  

  调用这个工具的方法,将word转换为pdf,以下是示例代码:

import alp.starcode.utils.Word2PdfUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;  @RestController public class FileController {      @GetMapping("word2Pdf")     public void word2Pdf() {         Word2PdfUtil.wordConvertPdfFile("D:\\code\\pdf\\word.docx","D:\\code\\pdf\\success.pdf");     }      @GetMapping("word2PdfByte")     public byte[] word2PdfByte() {         return Word2PdfUtil.wordConvertPdfByte("D:\\code\\pdf\\word.docx");     }       } 

  下图是转换后的效果
在这里插入图片描述
在这里插入图片描述
  word文件转pdf文件完成,后续将更新excel转pdf示例。

相关内容

热门资讯

黑科技私人局(wpk微扑克辅助... 黑科技私人局(wpk微扑克辅助透视)外挂透明挂辅助app(透视)本来真的是有挂(有挂总结)-哔哩哔哩...
必看攻略!聚星扑克辅助软件(黑... 必看攻略!聚星扑克辅助软件(黑科技ai)细节揭秘(2023已更新)(哔哩哔哩)1、完成聚星扑克辅助软...
黑科技黑科技(WePoKe)w... 黑科技黑科技(WePoKe)wepower有ai吗(辅助挂)其实真的是有挂(2026已更新)(哔哩哔...
黑科技免费(德州ai神器下载)... 黑科技免费(德州ai神器下载)外挂透明挂辅助插件(透视)一直真的是有挂(真的有挂)-哔哩哔哩德州ai...
玩家必看分享!wpk有没有作弊... 玩家必看分享!wpk有没有作弊(智能ai)细节方法(2025已更新)(哔哩哔哩);wpk有没有作弊辅...
黑科技脚本(WePoKe)德州... 黑科技脚本(WePoKe)德州之星app有外挂吗(透明黑科技)总是是真的有挂(2023已更新)(哔哩...
黑科技ai挂(wpk微扑克俱乐... 黑科技ai挂(wpk微扑克俱乐部)外挂透明挂辅助助手(透视)本来真的是有挂(存在有挂)-哔哩哔哩;1...
玩家攻略推荐!扑克时间有后台控... 玩家攻略推荐!扑克时间有后台控制吗(透明挂)德州教程(2021已更新)(哔哩哔哩)1、不需要AI权限...
黑科技新版(WePoKe)智星... 黑科技新版(WePoKe)智星德州辅助(智能ai)一直真的是有挂(2023已更新)(哔哩哔哩)1、下...
黑科技安装(aapoker为什... 黑科技安装(aapoker为什么一直输)外挂透明挂辅助软件(透视)本来有挂(有挂实锤)-哔哩哔哩1、...