1. 工具类 AsposeUtil

@Component
@Slf4j
public class AsposeUtil {private static final String[] WORD = {"doc", "docx", "wps", "wpt", "txt"};private static final String[] EXCEL = {"xls", "xlsx", "et", "xlsm"};private static final String[] PPT = {"ppt", "pptx"};private static final String[] PDF = {"pdf"};private static final String[] IMG = {"bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp", "avif", "apng"};private static final String TYPE_UNSUPPORT = "不支持的格式";private static final String TYPE_WORD = "TYPE_WORD";private static final String TYPE_EXCEL = "TYPE_EXCEL";private static final String TYPE_PPT = "TYPE_PPT";private static final String TYPE_PDF = "TYPE_PDF";private static final String TYPE_IMG = "TYPE_IMG";@AutowiredOssUtil ossUtil;private boolean judgeLicense() {boolean result = false;try {//          InputStream is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");String license ="<License>\n" +"  <Data>\n" +"    <Products>\n" +"      <Product>Aspose.Total for Java</Product>\n" +"      <Product>Aspose.Words for Java</Product>\n" +"    </Products>\n" +"    <EditionType>Enterprise</EditionType>\n" +"    <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +"    <LicenseExpiry>20991231</LicenseExpiry>\n" +"    <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +"  </Data>\n" +"  <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +"</License>";InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));License aposeLic = new License();aposeLic.setLicense(is);result = true;} catch (Exception e) {log.error("Aspose License Error,error:{}",e);}return result;}/*** 根据文件名判断文件类型** @return*/private String getType(String fileName) {String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); // 后缀if (CollUtil.contains(Arrays.asList(WORD), suffix)) {return TYPE_WORD;} else if (CollUtil.contains(Arrays.asList(EXCEL), suffix)) {return TYPE_EXCEL;} else if (CollUtil.contains(Arrays.asList(PPT), suffix)) {return TYPE_PPT;} else if (CollUtil.contains(Arrays.asList(PDF), suffix)) {return TYPE_PDF;} else if (CollUtil.contains(Arrays.asList(IMG), suffix)) {return TYPE_IMG;} else {return TYPE_UNSUPPORT;}}/*** 文件转化pdf** @param fileName 传入的文件名称* @param addr     传入的文件地址* @return 转换后的pdf地址 或 格式不支持预览*/public String toPdf(String fileName, String addr) throws Exception {if (!judgeLicense()) {throw new BizException(BuErrorEnum.ASPOSE_LISENSE_PROBLEM.getErrCode(), BuErrorEnum.ASPOSE_LISENSE_PROBLEM.getErrMsg());}String type = getType(fileName);switch (type) {case TYPE_UNSUPPORT:return TYPE_UNSUPPORT;case TYPE_PDF:return addr;case TYPE_IMG:return addr;default:break;}InputStream in = URLUtil.getStream(URLUtil.url(addr)); // 下载文件ByteArrayOutputStream tmp = new ByteArrayOutputStream();switch (type) {case TYPE_WORD:tmp = wordToPdfStream(in);break;case TYPE_EXCEL:tmp = excelToPdfStream(in);break;case TYPE_PPT:tmp = pptToPdfStream(in);break;default:break;}PdfMultipartFile pdfMultipartFile = new PdfMultipartFile(fileName, new ByteArrayInputStream(tmp.toByteArray()));return ossUtil.uploadFile(pdfMultipartFile);}private ByteArrayOutputStream wordToPdfStream(InputStream in) throws Exception {Document doc = new Document(in);ByteArrayOutputStream dstStream = new ByteArrayOutputStream();doc.save(dstStream, com.aspose.words.SaveFormat.PDF);return dstStream;}private ByteArrayOutputStream excelToPdfStream(InputStream in) throws Exception {Workbook excel = new Workbook (in);ByteArrayOutputStream dstStream = new ByteArrayOutputStream();excel.save(dstStream, com.aspose.cells.SaveFormat.PDF);return dstStream;}private ByteArrayOutputStream pptToPdfStream(InputStream in) throws Exception {Presentation ppt = new Presentation (in);ByteArrayOutputStream dstStream = new ByteArrayOutputStream();ppt.save(dstStream, SaveFormat.Pdf);return dstStream;}
}
public class PdfMultipartFile implements MultipartFile {private final String name;private final String originalFilename;@Nullableprivate final String contentType;private final byte[] content;public PdfMultipartFile(String name, @Nullable byte[] content) {this(name, "", null, content);}public PdfMultipartFile(String name, InputStream contentStream) throws IOException {this(name, "", null, FileCopyUtils.copyToByteArray(contentStream));}public PdfMultipartFile(String name, @Nullable String originalFilename, @Nullable String contentType, @Nullable byte[] content) {Assert.hasLength(converName(name), "Name must not be empty");this.name = converName(name);this.originalFilename = (originalFilename != null ? originalFilename : "");this.contentType = contentType;this.content = (content != null ? content : new byte[0]);}public PdfMultipartFile(String name, @Nullable String originalFilename, @Nullable String contentType, InputStream contentStream)throws IOException {this(name, originalFilename, contentType, FileCopyUtils.copyToByteArray(contentStream));}private String converName(String name) {int index = name.lastIndexOf(".");if (index > 0) {String suffix = name.substring(index).toLowerCase();return name.replace(suffix, ".pdf");}return name + ".pdf";}@Overridepublic String getName() {return this.name;}@Override@NonNullpublic String getOriginalFilename() {return this.originalFilename == null || this.originalFilename.equals("") ? this.name : this.originalFilename;}@Override@Nullablepublic String getContentType() {return this.contentType;}@Overridepublic boolean isEmpty() {return (this.content.length == 0);}@Overridepublic long getSize() {return this.content.length;}@Overridepublic byte[] getBytes() throws IOException {return this.content;}@Overridepublic InputStream getInputStream() throws IOException {return new ByteArrayInputStream(this.content);}@Overridepublic void transferTo(File dest) throws IOException, IllegalStateException {FileCopyUtils.copy(this.content, dest);}}

2. license文件

<License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>

3. jar包

4. 本地pom引入

<!--aspose start--><dependency><groupId>com.aspose</groupId><artifactId>slides</artifactId><version>15.9.0</version><scope>system</scope><systemPath>${project.basedir}/lib/aspose.slides-15.9.0.jar</systemPath></dependency><dependency><groupId>aspose</groupId><artifactId>cells</artifactId><version>8.5.2</version><scope>system</scope><systemPath>${project.basedir}/lib/aspose-cells-8.5.2.jar</systemPath></dependency><dependency><groupId>aspose</groupId><artifactId>words</artifactId><version>16.8.0</version><scope>system</scope><systemPath>${project.basedir}/lib/aspose-words-16.8.0-jdk16.jar</systemPath></dependency><!--aspose end-->

Aspose实现word、excel、ppt转pdf相关推荐

  1. php word excel转pdf文件怎么打开,php office文件(word/excel/ppt)转pdf文件,pptpdf

    php office文件(word/excel/ppt)转pdf文件,pptpdf 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, 关于预览office文件实现核心就是,把o ...

  2. php word/excel/ppt 转pdf

    转载至:https://blog.csdn.net/sangjinchao/article/details/78053545 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, ...

  3. java word,excel,ppt转pdf

    准备工作 1.下载 jacob.jar  链接:https://pan.baidu.com/s/1TWIGyX9A3xQ6AG9Y3mVlVg  提取码:abcd 2.下载安装wps WPS Offi ...

  4. Python办公自动化(八)|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转

    Word转PDF Word转PDF应该是最常见的需求了,毕竟使用PDF格式可以更方便展示文档,虽然在Word中可以直接导出为PDF格式,但是使用Python可以批量转换,更加高效. 目前在Python ...

  5. 文末福利|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!

    往期精选 Python办公自动化|从Word到Excel Python办公自动化|从Excel到Word Python办公自动化|对比文件,光速完成 Python办公自动化|Excel表格,自动更新 ...

  6. 使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!

    同一个操作执行两次,就要考虑自动化! 大家好,又到了Python办公自动化专题. 今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Pyth ...

  7. python把excel变成ppt_【转】使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!

    今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Python的好处不仅可以批量转换,同时一旦脚本写完了以后就可以一键执行,彻底解放双手,那 ...

  8. 用python转换PDF/Word/Excel/PPT等!

    作者:刘早起 来源:早起Python 大家好,又到了Python办公自动化专题.今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Pytho ...

  9. Python转换PDF,Word/Excel/PPT都能转!

    今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Python的好处不仅可以批量转换,同时一旦脚本写完了以后就可以一键执行,彻底解放双手,那 ...

  10. Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)

    Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景 2.环境准备工作 2.1 JACOB介绍及安装 2.2 Microsoft Office W ...

最新文章

  1. 银行业务软件测试,银行业务软件系统测试研究
  2. 学习linux之用户-文件-权限操作
  3. 移动端1px像素实现技巧 - 讲解篇
  4. Spring DataSource JNDI - Tomcat JNDI 配置示例
  5. 梯度下降、牛顿法、拟牛顿法详细介绍
  6. 奋斗吧!我们为之奋斗的正则表达式
  7. python 字典技巧
  8. js 中断函数执行_js如何中断递归函数
  9. 自己动手实现一个简单的 IOC,牛皮!!
  10. 大华监控相机RTSP视频流
  11. 一种标准地图服务转矢量Shapefile方法
  12. 编译原理的有限自动机
  13. windows 10 账号密码策略及规则
  14. effective stl
  15. 从庆祝动作解读科比和詹姆斯
  16. hdu 4399 树形dp
  17. 从高通手动搜网代码流程看sd脚本的执行
  18. mysql区间算法_「五大常用算法」一文图解分治算法和思想
  19. python求导并作图_科学网—python-符号运算(求导等) - 夏江江的博文
  20. 汇编语言与微机原理(1)基础知识

热门文章

  1. \newcommand使用技巧兼谈fontsize
  2. VMware FCoE
  3. 电信无线网服务器是什么,电信无线路由器设置 什么是电信无线路由器
  4. 【Effective C++ 学习笔记】
  5. 生产者消费者模式详解(转载)
  6. 成为开发者喜爱的科技企业 PingCAP 上榜中国技术力量之“最具吸引力雇主品牌”
  7. 【产品动态】云存储3月月刊
  8. CAS操作产生的ABA问题
  9. SpringSecurity多端登录实现方案
  10. kubebuilder实践笔记(4) - 编写简单的业务逻辑