前言:通过第三方工具实现将word或者ppt转为pdf格式;

1、documents4j 实现word转pdf  附:(在线预览)

        <!-- documents4j word转pdf --><dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.1.5</version></dependency><dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-word</artifactId><version>1.1.5</version></dependency>
public class WORDtoODF {public static boolean docxToPdf(String wordFilePath, String pdfFilePath) {boolean result = false;File inputFile = new File(wordFilePath);File outputFile = new File(pdfFilePath);try {InputStream inputStream = new FileInputStream(inputFile);OutputStream outputStream = new FileOutputStream(outputFile);IConverter converter = LocalConverter.builder().build();converter.convert(inputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();outputStream.close();result = true;} catch (Exception e) {e.printStackTrace();}return result;}@RequestMapping("/word2pdf")public void word2pdf(HttpServletResponse response) {String wordPath = "D:\\home\\word\\aaa.docx";String pdfPath = "D:\\home\\word\\需求分析报告.pdf";docxToPdf(wordPath,pdfPath);System.out.println("转换成功");File file = new File(pdfPath);ResponseUtil.onlineReader(file,response);System.out.println("执行完毕");}
}

1.1、在线预览工具

/*** 在线预览,附件下载 工具包*/
public class ResponseUtil {public static void responseBrowser(File file, HttpServletResponse response) {//下面的是进行响应客户端的测试代码try {FileInputStream fileInputStream = new FileInputStream(file);//设置Http响应头告诉浏览器下载这个附件,下载的文件名也是在这里设置的System.out.println("file.getName()   >>>" + file.getName());response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));// response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));System.out.println("file.getPath() >>>>>>" + file.getPath());OutputStream outputStream = null;outputStream = response.getOutputStream();byte[] bytes = new byte[2048];int len = 0;while ((len = fileInputStream.read(bytes)) > 0) {outputStream.write(bytes, 0, len);}fileInputStream.close();outputStream.close();} catch (IOException e) {e.printStackTrace();System.out.println("文件响应出错,读写出错");}}public static void onlineReader(File file, HttpServletResponse response) {if (file.exists()) {byte[] data = null;try {response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));FileInputStream input = new FileInputStream(file);data = new byte[input.available()];input.read(data);response.getOutputStream().write(data);input.close();} catch (Exception e) {System.out.println(e);}} else {System.out.println("文件不存在");}}
}

2、Apach POI实现ppt转pdf

 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.0.6</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency>
public class PPTtoPDF {private static final String path = "D:\\home\\ppt\\";public static void main(String[] args) throws Exception {System.out.println(new Date().toString());String wordPath = "D:\\home\\ppt\\eee.pptx";String pdfPath = "D:\\home\\ppt\\eee.pdf";File inputFile = new File(wordPath);File outputFile = new File(pdfPath);if (!outputFile.exists())outputFile.createNewFile();convertPPTToPDF(inputFile,outputFile);System.out.println(new Date().toString());System.out.println("转换成功");}public static boolean convertPPTToPDF(File file, File toFile) {try {Document pdfDocument = new Document();PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, new FileOutputStream(toFile));FileInputStream is = new FileInputStream(file);HSLFSlideShow hslfSlideShow = convertPPTToPDFByPPT(is);double zoom = 2;if (hslfSlideShow == null) {is = new FileInputStream(file);XMLSlideShow ppt = convertPPTToPDFByPPTX(is);if (ppt == null) {throw new NullPointerException("This PPTX get data is error....");}Dimension pgsize = ppt.getPageSize();List<XSLFSlide> slide = ppt.getSlides();AffineTransform at = new AffineTransform();at.setToScale(zoom, zoom);pdfDocument.setPageSize(new Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));pdfWriter.open();pdfDocument.open();PdfPTable table = new PdfPTable(1);for (XSLFSlide xslfSlide : slide) {BufferedImage img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();graphics.setTransform(at);graphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));xslfSlide.draw(graphics);graphics.getPaint();Image slideImage = Image.getInstance(img, null);table.addCell(new PdfPCell(slideImage, true));}ppt.close();pdfDocument.add(table);pdfDocument.close();pdfWriter.close();System.out.println(file.getAbsolutePath() + "Powerpoint file converted to PDF successfully");return true;}Dimension pgsize = hslfSlideShow.getPageSize();List<HSLFSlide> slides = hslfSlideShow.getSlides();pdfDocument.setPageSize(new Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));pdfWriter.open();pdfDocument.open();AffineTransform at = new AffineTransform();PdfPTable table = new PdfPTable(1);for (HSLFSlide hslfSlide : slides) {BufferedImage img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();graphics.setTransform(at);graphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));hslfSlide.draw(graphics);graphics.getPaint();Image slideImage = Image.getInstance(img, null);table.addCell(new PdfPCell(slideImage, true));}hslfSlideShow.close();pdfDocument.add(table);pdfDocument.close();pdfWriter.close();System.out.println(file.getAbsolutePath() + "Powerpoint file converted to PDF successfully");return true;} catch (Exception e) {System.out.println(file.getAbsolutePath() + "--->" + e.getMessage());return false;}}private static XMLSlideShow convertPPTToPDFByPPTX(FileInputStream is) {try {return new XMLSlideShow(is);} catch (IOException e) {return null;}}private static HSLFSlideShow convertPPTToPDFByPPT(FileInputStream is) {try {return new HSLFSlideShow(is);} catch (Exception e) {return null;}}
}

Java通过第三方工具实现Word、PPT转 PDF (easy)相关推荐

  1. java excel转pdf linux,从JAVA直接读取EXCEL、WORD并生成PDF文件

    从JAVA直接读取EXCEL.WORD并生成PDF文件 1.操作EXCEL和WORD文件 使用JAVA从EXCEL.WORD文件中读写数据,可以使用http://jexcelapi.sourcefor ...

  2. java将office文档,word,ppt,pdf文档转换成swf文件在线预览

    java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux ...

  3. 怎么把ppt弄成链接的形式_怎么把PPT转换成PDF?这两个工具可以实现PPT转PDF

    怎么把PPT转换成PDF?PPT和PDF是两种外观上很相似的文件,但是PPT文件的兼容性不如PDF.很多PPT文件在不同电脑或移动设备中都会出现文件内容乱码的问题.有个简单的操作可以解决这个问题,那就 ...

  4. python ——word ppt 转pdf

    全部代码: 简单的使用input来输入要选择的转换pdf的文件格式,也可以使用sys.args. 仅支持 doc.docx.ppt.pptx格式 使用bat 调用python文件更加方便 import ...

  5. Java使用第三方工具包将word转换为PDF文件

    ** 最近有个需求是生成报表的同时需要提供word文档下载和PDF下载的功能,试了几款软件,最终选用Aspose.words工具,但是试用版会自动加水印和有页数限制,下附去水印教程和页数限制去除,方法 ...

  6. word转换成pdf java代码_java代码实现word转换成pdf

    [实例简介] va代码 word转pdf ,word批量转换成pdf,word单独转换成pdf,只需要调用WordToPDFUtil方法就可以实现批量或者单独转换 [实例截图] [核心代码] e6f6 ...

  7. Microsoft office 2007 word PPT 转pdf的插件(转)

    大家肯定常常office转pdf.特别是Word和PowerPoint,窃以为,foxit什么的软件并不方便. 其实微软官方开发了插件,并在网站发布:SaveAsPDFandXPS. 随office ...

  8. Microsoft office 2007 word PPT 转pdf的插件

    大家肯定常常office转pdf.特别是Word和PowerPoint,窃以为,foxit什么的软件并不方便. 其实微软官方开发了插件,并在网站发布:SaveAsPDFandXPS. 随office ...

  9. Java将Excel文件、Word文件转为PDF

    因为要做文件在线预览 . 网上找了方法是需要调用公网微软地址传入我的文件路径 <iframe src='https://view.officeapps.live.com/op/view.aspx ...

最新文章

  1. spring boot系列03--spring security (基于数据库)登录和权限控制(下)
  2. 使用脚本将数据从辅助数据源传送到 InfoPath 域
  3. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
  4. 买淘宝特价版,产业升级的证明
  5. 科大星云诗社动态20210308
  6. JSP EL表达式详细介绍
  7. 菱形继承和虚继承、对象模型和虚基表
  8. 解决pom文件第一行报错(unknown)-亲测有效
  9. flutter跨平台开发之App升级方案
  10. 前端学java还是python_零基础应该选择学习 java、php、前端 还是 python?
  11. git同时推送项目到GitHub和Gitee
  12. 【elasticsearch】es一直重启,报错日志是分片无法分配
  13. dtproperties表小解[网络收集]
  14. TCL嵌入式测试技术在Comware V7系统中的应用
  15. 禁止搜狗拼音输入法自动更新
  16. Vue播放m3u8视频格式的视频监控(适合移动端和pc端),用了Video.js,以及多视频列表循环播放代码,已测试,可播放
  17. JAVA音程_下列选项中哪个音程是减三和弦?
  18. React中的ref属性的使用
  19. 鸿蒙音响怎么调,专业音响师必知的EQ调整小技巧
  20. git clone unexpected disconnect while reading sideband packet

热门文章

  1. 操作系统--------安全系统的相关知识
  2. (Pycharm新版专业版)初次部署无法同步文件,报错信息:找不到要处理的文件或文件夹
  3. Vue 高德地图 js API Loca 如何使用 连接线图层、脉冲连线图层
  4. 人类对于人工智能的担忧来源于什么(上)
  5. ESXi直通USB键鼠
  6. vscode——VScode中增加翻译插件
  7. 使用 http-proxy 代理 HTTP 请求时遇到的 the requested url is invalid 错误消息
  8. ESP8266-Arduino编程实例-认识ESP8266
  9. 2017年下半年自媒体的发展趋势如何?这几种那种你比较了解?...
  10. SQL中UNNEST 是什么