嘿嘿嘿、嘿嘿,俺又回来了!
一、巴拉巴拉
为什么发布这篇文档转换的文章呢?因为上周我要将一个PDF转换为Word,结果百度谷歌了所有文章,最终的结果都是“能转换,但是只能转换一点点,多了就要收费”,于是乎我突发奇想、心血来潮在放假的那天打算开发一款小程序实现各种文档的转换,在百度了一下午后发现目前都是借助Aspose实现的,但是好像要收费,在我新建项目时偶然间发现原来Maven仓库里面居然有人将破解好的Jar包上传到Maven中央仓库了,于是我测试了一下,哈哈真香,于是就有了这篇文章。至于小程序做的怎么样了呢?暂时又搁置了,因为我调查了一下已经有现成的好多优秀的微信小程序可以实现各种文档转换了,还有就是个人小程序没法上线,可能暂时不会做小程序了,大家有想法的可以按照自己的想法使用我的源码,直接和前端对接做出优秀的小程序。
二、PDF相关文件操作
1.引入依赖
<dependency> <groupId>com.luhuiguo</groupId> <artifactId>aspose-pdf</artifactId> <version>23.1</version> </dependency>
2.代码实现(只贴关键代码,代码我会放到GitHub跟Gitee上面,大家自取、还有完整的接口文档我都会放出来)
① 上传OSS工具类 OssUpLoadTools
/** * @description: 获取文件保存地址 * @return: java.lang.String * @author: zhouhong * @date: 2023/4/30 12:36 */ public String getSavePath() { ApplicationHome applicationHome = new ApplicationHome(this.getClass()); // 保存目录位置根据项目需求可随意更改 return applicationHome.getDir().getParentFile() .getParentFile().getAbsolutePath() + "\\src\\main\\resources\\templates\\"; } /** * @description: 上传文件到阿里云OSS * @return: java.lang.String * @author: zhouhong * @date: 2023/5/1 22:55 */ public String uploadOssFile(String fileName, File file){ // 创建OSSClient实例。 OSS ossClient = ossConfig.getOssClient(); try { // 创建PutObjectRequest对象。 PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucketName(), fileName, file); putObjectRequest.setProcess("true"); // 上传文件。 PutObjectResult result = ossClient.putObject(putObjectRequest); // 如果上传成功,则返回200。 if (result.getResponse().getStatusCode() == 200) { return result.getResponse().getUri(); } } catch (OSSException oe) { } catch (ClientException ce) { } finally { if (ossClient != null) { ossClient.shutdown(); } } return null; }
② PDF转其他文件
/** * @description: PDF 转其他文件 * @return: java.util.List<java.lang.String> * @author: zhouhong * @date: 2023/5/1 23:34 */ @Override public List<String> pdfToFile(MultipartFile file,String type) { List<String> res = new ArrayList<>(); String checkType = FilenameUtils.getExtension(file.getOriginalFilename()); if (!"pdf".equals(checkType)) { throw new ServiceException(1, "输入文件不是PDF文件!"); } try { switch (type.toUpperCase()) { case "WORD" : { return switchFile(file, com.aspose.pdf.SaveFormat.DocX, "docx"); } case "XML" : { return switchFile(file, SaveFormat.PdfXml, "xml"); } case "EXCEL" : { return switchFile(file, com.aspose.pdf.SaveFormat.Excel, "xlsx"); } case "PPT" : { return switchFile(file, com.aspose.pdf.SaveFormat.Pptx, "pptx"); } case "PNG" : { // 图片类型的需要获取每一页PDF,一张一张转换 Document pdfDocument = new Document(file.getInputStream()); //分辨率 Resolution resolution = new Resolution(130); PngDevice pngDevice = new PngDevice(resolution); // if (pdfDocument.getPages().size() <= 10) { for (int index = 0; index < pdfDocument.getP