Word、Excel、TXT、PDF文件等转PDF--使用Aspose

  • 需求背景
  • Word、Excel文档转PDF
  • PPT转PDF
  • 图片转PDF

需求背景

支持各种文件上传,并支持部分文件的预览。
由于项目前端的文件预览需要支持以下格式,但是ppt、txt无法预览,需要转换为PDF查看。

1.docx、doc文件起初使用documents4j,因为项目是部署在Linux上的,本地转换是正常的,在Linux上执行需要ms office,执行不了vbs,会报错,最后换成了Aspose。
2.Excel文件用documents4j转换时效果不好,列数太多,宽度太宽会分页显示,也换成Aspose来处理。
word和excel都参考了这个地址 传送门。
3.ppt使用 itextpdf 和 poi,转换为图片再写入PDF中。

Word、Excel文档转PDF

下载aspose-word的jar包,在项目的resource下创建lib,放入jar包。网上找个license.xml也放在resource下。没有license会有水印。
maven项目,需要在pom文件中引入依赖,项目打包时也要把jar包打上。

<dependency><groupId>com.aspose</groupId><artifactId>cells</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/main/resources/lib/aspose-cells-8.5.2.jar</systemPath></dependency><dependency><groupId>com.aspose</groupId><artifactId>words</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/main/resources/lib/aspose-words-16.8.0.jar</systemPath></dependency>


原帖是写的接口,在我的项目中我写成了工具类,方便调用。
1.载入license授权文件,License导入的是com.aspose.words.License下的,excel导入的是cells下的。

    protected static boolean matchLicense() {boolean result = false;InputStream is = Word2Pdf.class.getClassLoader().getResourceAsStream("licenses/license.xml");License wordLicense = new License();try {wordLicense.setLicense(is);result = true;} catch (Exception e) {log.warn("载入word授权文件失败");}return result;}

2.匹配文件类型,doc、docx、txt都支持

   protected static boolean matchFileType(String fileName) {//fileTypes为static变量fileTypes.add("doc");fileTypes.add("docx");fileTypes.add("txt");int index = fileName.indexOf(".");String suffix = fileName.substring(index+1, fileName.length());if(fileTypes.contains(suffix)) {return true;}return false;}

3.word 文件转换,依次调用

public static void convert2PDF(File sourceFile, File targetFile) {FileOutputStream os = null;Document doc = null;try {os = new FileOutputStream(targetFile);doc = new Document(sourceFile.getAbsolutePath());doc.save(os, SaveFormat.PDF);} catch (Exception e) {log.error("输出到" + targetFile.getAbsolutePath() + "错误:" + e);}finally {//关闭流...}}

4.excel文件转换,设置表页的列宽度自适应

public static void convert2PDF(File sourceFile, File targetFile) {FileOutputStream fileOs = null;Workbook wb = null;try {fileOs = new FileOutputStream(targetFile);wb = new Workbook(sourceFile.getAbsolutePath());WorksheetCollection worksheets = wb.getWorksheets();Iterator<Worksheet> iterator = worksheets.iterator();while (iterator.hasNext()){Worksheet next = iterator.next();setColumnWithAuto(next);}PdfSaveOptions saveOptions = new PdfSaveOptions();saveOptions.setAllColumnsInOnePagePerSheet(true);wb.save(fileOs, saveOptions);} catch (FileNotFoundException e) {log.error("输出到"+targetFile.getAbsolutePath()+"错误:"+e);} catch (Exception e) {log.error("转换excel出错:"+e);}finally {//.....关闭流}}/*** 设置表页的列宽度自适应* @param sheet*/private static void setColumnWithAuto(Worksheet sheet) {Cells cells = sheet.getCells();int columnCount = cells.getMaxColumn() + 1;//获取表页的最大列数int rowCount = cells.getMaxRow();//获取表页的最大行数for (int col = 0; col < columnCount; col++){try {sheet.autoFitColumn(col, 0, rowCount);} catch (Exception e) {e.printStackTrace();}}for (int col = 0; col < columnCount; col++){int pixel = cells.getColumnWidthPixel(col)+30;if (pixel > 255){cells.setColumnWidthPixel(col, 255);}else{cells.setColumnWidthPixel(col, pixel);}}}

PPT转PDF

抄袭的,贴上,下次用

可预览文件转PDF-使用Aspose相关推荐

  1. 浏览器中预览文件(pdf、图片文件)

    本文讲解在浏览器中预览PEF文件或图片文件,思路如下: 使用window.fetch请求文件资源,生成blob对象,创建此blob对象的url,之后在浏览器中显示预览,下面是具体实现代码: 1.单击& ...

  2. 小程序如何打开预览文件 (pdf)

    小程序中要想预览查看pdf等各种文件,跟在pc.h5上是不一样的,pc.h5是可以直接打开odf的文件进行预览查看的,小程序需要先下载,再打开本地的pdf文件路径进行查看. 一共用到两个API : w ...

  3. php+预览和下载pdf文件,vue实现在线预览pdf文件和下载(pdf.js)

    最近做项目遇到在线预览和下载pdf文件,试了多种pdf插件,例如jquery.media.js(ie无法直接浏览) 最后选择了pdf.js插件(兼容ie10及以上.谷歌.安卓,苹果) 强烈推荐改插件, ...

  4. 【微信小程序】小程序实现文件的上传及预览,以PDF文件为例。

    安卓系统和ios系统 一开始被一篇ios预览PDF文件需要用到webview的博客给误导了,以为安卓预览文件需要调用wx.downloadFile()和wx.openDocument()这两个API, ...

  5. vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt)

    需求 最近在做vue2.0+element UI的项目中遇到了一个需求:需求是多个文件上传的同时实现文件的在线预览功能.需求图如下: 看到这个需求的时候,小栗脑袋一炸.并不知道该如何下手,之前的实践项 ...

  6. java实现文件预览(Office转PDF)

    一.首先下载安装openOffice软件,下载地址:http://www.openoffice.org/download/index.html 当然,下载速度特别慢,下面是百度网盘地址. 链接:htt ...

  7. 【vue2】纯前端实现本地的pdf/word/epub文件预览(包括pdf选中文字,epub高亮等)

    前言 需求是预览本地的pdf/word/epub格式的文件,但是搜索后发现没有可以直接使用的,格式不同,显示的方式和效果也都略有不同. 最后还是分别实现预览的功能. 补充功能:pdf选中文字,epub ...

  8. jsp 展示服务器pdf文件,pdf在线预览_jsp实现pdf在线预览功能

    摘要 腾兴网为您分享:jsp实现pdf在线预览功能,钻石星球,桌面时钟,学堂在线,新东方等软件知识,以及新游手柄游戏厅,qq6.2,硬盘坏道,录音盒,番茄花园rom,x架子,内蒙古科协,陕西交管121 ...

  9. 前端预览word文件_[装机必备] QuickLook —— 敲击空格即可快速预览文件

    ​今天给大家推荐的软件是:QuickLook 你只需要选中文件,然后敲击空格,就可以快速预览文件内容 QuickLook 有三个版本:安装版.便携版.UWP 版 作者对这三个版本的描述: *需要注意的 ...

最新文章

  1. RISC-V会被卡吗?那么你觉得C语言会不会被卡? | 包云岗
  2. plt保存图片_人工智能Keras CNN卷积神经网络的图片识别模型训练
  3. OpenVirteX 安装
  4. 冷静处理因为一时疏忽产生的错误。是提升自己的重要方法
  5. C 语言 int 型乘法溢出问题
  6. linux服务器重启init 6和reboot区别
  7. 11,外观模式(Facade Pattern)是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...
  8. bootstrap 3.0 LESS源代码浅析(一)
  9. arrive 和reach 的区别
  10. ES6新特性总结之解构赋值和字符串模板
  11. 滚动时RecyclerView对ViewHolder的缓存与复用
  12. CentOS 7 - Securing OpenSSH(一)
  13. 魔兽世界WOW服务器端的模拟器【2010】
  14. JavaScrpt LRC歌词同步 和 es6 的 fetch 的 async/await 和 promise 两种写法
  15. 遥感图像变化检测数据集
  16. 黑马头条项目-Vue-day9-文章详情模块、关注与取消关注,点赞和喜欢功能
  17. C++STL accumulate函数
  18. 使用Webcam实现拍照功能
  19. 爱奇艺攻防演练平台的探索实践(文末有直播福利)
  20. HTML复选框,点击文字,对应的复选框选中

热门文章

  1. Photoshop中怎么把白色背景改为黑色背景
  2. 快速接入Fixer全球货币汇率api(按照官方解读)
  3. 基于PHP电影院选座售票系统设计与实现 开题报告
  4. 32 位 Win7 用 4G 内存破解加去水印全攻略
  5. Linux shell脚本分割文件
  6. Python3 爬取 NBA 2013-2014 赛季比赛数据
  7. mw325r 服务器无响应),水星(MERCURY)MW325R路由器连不上网怎么办?
  8. oracle数据库短期培训,Oracle数据库培训课件.ppt
  9. IBM V5000E存储更换故障硬盘
  10. 未能连接浙江农信网上银行服务器,浙江农信怎么打不开?浙江农信打不开怎么办?[图]...