Java使用apache的poi将PPT转PDF文件,支持并兼容PPT和PPTX文件

前言:使用apache的poi,免费

废话不多说,贴代码:

package com.junit;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;import org.apache.poi.hslf.usermodel.HSLFSlide;
import org.apache.poi.hslf.usermodel.HSLFSlideShow;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;public class PPTtoPDF {private static final String path = "D:\\_my_del\\ppt\\";public static void main(String[] args) throws Exception {File file2 = new File(path + "ResultG/");if (!file2.exists())file2.mkdirs();File file = new File(path);for (File f : file.listFiles()) {if (!f.isFile())continue;file2 = new File(path + "ResultG/" + file.getName() + ".pdf");if (!file2.exists())file2.createNewFile();new PPTtoPDF().convertPPTToPDF(f, file2);}}public 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 XMLSlideShow convertPPTToPDFByPPTX(FileInputStream is) {try {return new XMLSlideShow(is);} catch (IOException e) {return null;}}private HSLFSlideShow convertPPTToPDFByPPT(FileInputStream is) {try {return new HSLFSlideShow(is);} catch (Exception e) {return null;}}
}

HSLFSlideShow 用于ppt文件,XMLSlideShow 用于pptx文件。

该代码需要jar包支持,为方便下载,已上传至本资源库,链接:
https://download.csdn.net/download/qq_26599807/12670074

  • 扩展:
    POI官方网站及下载:http://poi.apache.org/download.html
    POI下载地址2:https://downloads.apache.org/poi/

Java使用apache的poi将PPT转PDF文件,支持并兼容PPT和PPTX文件相关推荐

  1. 最好的ppt转pdf软件

    为什么80%的码农都做不了架构师?>>> 最好的ppt转pdf软件 根据日常操作经验,尝试了很多软件,目前的确没有找到这正的一款支持PDF,Word,PPT之间的互转的绿色.破解免费 ...

  2. 如何将pdf转换成ppt,pdf转ppt方法

    如何将pdf转换成ppt?ppt和pdf都是使用频率较高的电脑文件,我们通常会先用ppt文件来编写内容,然后将ppt文件另存为pdf格式,相信很多人会这样操作.大家也知道ppt转换成pdf还是比较简单 ...

  3. 批量文档处理软件推荐,同时处理 Word、Excel、PPT、PDF 等办公文件,支持批量格式转换、重命名和查找替换等

    概要:今天给大家带来的这款专门针对 Word.PPT.Excel.PDF 和记事本文本文件批量处理格式转换的软件--我的ABC软件工具箱.它集合了批量修改文件名称.批量修改文件内容.批量设置页眉页脚. ...

  4. PPT转PDF怎么转?这几种转换小技巧轻松拿捏

    PPT文件怎么转换成PDF文件格式呢?大家在工作的时候有没有经常遇到这样的转换需求?开会用的PPT文件,开完会后要求把PPT文件做成PDF文件来发送给他人或者是存档保存.遇到这种情况怎么才能最快速的解 ...

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

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

  6. 怎么把ppt转成pdf?PPT转PDF简单方法分享

    我们平时在工作办公的时候,Word,Excel,PPT,PDF这些文件格式都会经常用到,文件格式之间的转换也会经常碰到.PPT是我们在演讲或开会时会经常用到的,但是有时候我们在其他设备上打开,它可能会 ...

  7. 【ppt入门教程】如何破解PPT加密文档保护 WINRAR破解PPT文档保护方法

    转载者: 答辩ppt模板下载 搜索: WINRAR破解PPT文档保护方法 ppt入门教程 如何破解PPT加密文档保护 本文主要关于如何破解PPT加密文档保护,给大家介绍的方法是WINRAR破解PPT文 ...

  8. 【Java编程系列】java用POI、Itext生成并下载PPT、PDF文件

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  9. java apache.poi_Java利用apache的POI操作Excel

    最近在写一些报表的活,顺便总结下...第一篇博文,希望多多指教. 项目中经常会设计到一些数据的报表问题,目前java中操作Excel的插件也有很多 ,我说下用apache的POI操作Excel的方法. ...

  10. Java 调用 Apache POI 往 Excel 插入图片

    Java 中,调用 Apache 的 POI 操作 Excel,往 Excel 中插入一张图片. //create a new workbookWorkbook wb = new XSSFWorkbo ...

最新文章

  1. 学会python爬虫怎么赚钱-转行学Python有前途吗?Python爬虫怎么赚钱?
  2. Jquery Easy UI--datagrid的使用(转)
  3. 深度学习搞docker真的搞的我心态炸裂
  4. Axure RP 简介
  5. 盐城大数据产业园人才公寓_住在永川大数据产业园人才公寓,是一种怎样的体验?...
  6. console.log()不显示结果_提醒低端电子显示屏易致视疲劳,OLED屏幕表现略好
  7. 【PL/SQL】九九乘法口诀表
  8. c语言程序和指令的关系为,C语言程序设计课件第1章计算机组成与程序设计语言汇总.ppt...
  9. Android局域网工具,NetX(局域网管理工具)
  10. gis怎么提取水系_ArcGIS提取水系并进行生态敏感性分析
  11. DiskGenius无法分区
  12. 6.0系统xposed框架安装流程
  13. css3 3d 太阳系,CSS3实现的太阳系行星系统
  14. 电话号码正则表达式手机固话分机
  15. 西班牙语dele等级_DELE——西班牙语水平考试
  16. 静态变量(static variable)
  17. 电脑发到,电脑发送到手机的文件在哪里
  18. [C++潜心修炼] 小试牛刀
  19. centos安装python3.X,系统默认2.7.5
  20. Idea 导包自动变成星号 Idea 导包自动变成*号的问题 java.io.* Idea 自动导包变成星号

热门文章

  1. 城通网盘文件地址分析器
  2. 【原创】无线LED条屏信息报警项目---2012.05
  3. 自动驾驶技术(3)- 高精度地图解决自动驾驶的功能痛点
  4. 评论列表css样式,评论框CSS样式修改
  5. 物联网(IoT)课程
  6. 苹果手机验真假_简单三步教你辨别苹果二手机,识别率高达99%,特别适合新手
  7. 圆通快递单css样式
  8. 科技论文阅读-论文写作-citavi-Latex-word-Grammarly-1checker 小笔记
  9. Html页面点击下载文件
  10. Windbg分析蓝屏Dump文件