使用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示例。

相关内容

热门资讯

玩家必看教程!福建天天开心辅助... 玩家必看教程!福建天天开心辅助工具视频,免费闲逸手游辅助软件下载(详细辅助黑科技教程)1、在福建天天...
透视挂!wepoker透视辅助... 透视挂!wepoker透视辅助下载(透视)永久脚本辅助方法(详细辅助wepoke教程)1、wepok...
透视科技"拱趴大菠萝... 透视科技"拱趴大菠萝万能挂"详细辅助揭秘教程(总是真的是有挂)1、打开软件启动之后找到中间准星的标志...
发现玩家!心悦辅助透视脚本,财... 发现玩家!心悦辅助透视脚本,财神十三张安装工具(详细辅助透明挂教程)您好,财神十三张安装工具,确实是...
透视苹果版!hhpoker为什... 透视苹果版!hhpoker为什么一直输(透视)永久脚本辅助神器(详细辅助必赢方法);1、进入游戏-大...
透视挂透视"wepo... 透视挂透视"wepoker辅助透视软件"详细辅助扑克教程(真是真的有挂);1、打开软件启动之后找到中...
玩家必看科普!佛手在线辅助工具... 1、玩家必看科普!佛手在线辅助工具佛手在线,多乐游戏小程序辅助器免费(详细辅助软件教程);代表性(透...
透视规律!佛手在线大菠萝智能辅... 透视规律!佛手在线大菠萝智能辅助器(透视)永久脚本辅助方法(详细辅助曝光教程)1、玩家可以在佛手在线...
透视新版"wepok... 透视新版"wepoker游戏的安装教程"详细辅助揭秘教程(总是真的是有挂);1、透视新版"wepok...
实测必看!闲逸辅助功能在哪,决... 您好,决战卡五星辅助软件哪个好用这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...