Aspose实现word、excel、ppt转pdf
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相关推荐
- php word excel转pdf文件怎么打开,php office文件(word/excel/ppt)转pdf文件,pptpdf
php office文件(word/excel/ppt)转pdf文件,pptpdf 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, 关于预览office文件实现核心就是,把o ...
- php word/excel/ppt 转pdf
转载至:https://blog.csdn.net/sangjinchao/article/details/78053545 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, ...
- java word,excel,ppt转pdf
准备工作 1.下载 jacob.jar 链接:https://pan.baidu.com/s/1TWIGyX9A3xQ6AG9Y3mVlVg 提取码:abcd 2.下载安装wps WPS Offi ...
- Python办公自动化(八)|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转
Word转PDF Word转PDF应该是最常见的需求了,毕竟使用PDF格式可以更方便展示文档,虽然在Word中可以直接导出为PDF格式,但是使用Python可以批量转换,更加高效. 目前在Python ...
- 文末福利|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
往期精选 Python办公自动化|从Word到Excel Python办公自动化|从Excel到Word Python办公自动化|对比文件,光速完成 Python办公自动化|Excel表格,自动更新 ...
- 使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
同一个操作执行两次,就要考虑自动化! 大家好,又到了Python办公自动化专题. 今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Pyth ...
- python把excel变成ppt_【转】使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Python的好处不仅可以批量转换,同时一旦脚本写完了以后就可以一键执行,彻底解放双手,那 ...
- 用python转换PDF/Word/Excel/PPT等!
作者:刘早起 来源:早起Python 大家好,又到了Python办公自动化专题.今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Pytho ...
- Python转换PDF,Word/Excel/PPT都能转!
今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Python的好处不仅可以批量转换,同时一旦脚本写完了以后就可以一键执行,彻底解放双手,那 ...
- Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)
Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景 2.环境准备工作 2.1 JACOB介绍及安装 2.2 Microsoft Office W ...
最新文章
- 银行业务软件测试,银行业务软件系统测试研究
- 学习linux之用户-文件-权限操作
- 移动端1px像素实现技巧 - 讲解篇
- Spring DataSource JNDI - Tomcat JNDI 配置示例
- 梯度下降、牛顿法、拟牛顿法详细介绍
- 奋斗吧!我们为之奋斗的正则表达式
- python 字典技巧
- js 中断函数执行_js如何中断递归函数
- 自己动手实现一个简单的 IOC,牛皮!!
- 大华监控相机RTSP视频流
- 一种标准地图服务转矢量Shapefile方法
- 编译原理的有限自动机
- windows 10 账号密码策略及规则
- effective stl
- 从庆祝动作解读科比和詹姆斯
- hdu 4399 树形dp
- 从高通手动搜网代码流程看sd脚本的执行
- mysql区间算法_「五大常用算法」一文图解分治算法和思想
- python求导并作图_科学网—python-符号运算(求导等) - 夏江江的博文
- 汇编语言与微机原理(1)基础知识