当前位置: 首页 > news >正文

pptx转pdf工具类

引入依赖

      <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.0-RC1</version></dependency>

工具类

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.poi.xslf.usermodel.*;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
public class FileConvertUtil {public static void convertPPTXtoPDF(String pptxFilePath, String pdfFilePath) {try (FileInputStream inputStream = new FileInputStream(pptxFilePath);FileOutputStream outputStream = new FileOutputStream(pdfFilePath)) {XMLSlideShow pptx = new XMLSlideShow(inputStream);PDDocument pdfDoc = new PDDocument();File imageTempDir = Files.createTempDirectory("pptx_to_pdf").toFile();int pageNum = 0;for (XSLFSlide slide : pptx.getSlides()) {for (XSLFShape shape : slide.getShapes()) {if (shape instanceof XSLFTextShape) {XSLFTextShape textShape = (XSLFTextShape) shape;for (XSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {for (XSLFTextRun textRun : textParagraph.getTextRuns()) {textRun.setFontFamily("宋体");}}}}Dimension pageSize = pptx.getPageSize();BufferedImage bufferedImage = new BufferedImage(pageSize.width, pageSize.height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = bufferedImage.createGraphics();graphics.setPaint(Color.white);graphics.fill(new Rectangle(pageSize));slide.draw(graphics);File imageFile = new File(imageTempDir, "slide_" + pageNum + ".png");ImageIO.write(bufferedImage, "png", imageFile);PDPage pdfPage = new PDPage(new org.apache.pdfbox.pdmodel.common.PDRectangle(pageSize.width, pageSize.height));pdfDoc.addPage(pdfPage);try (PDPageContentStream contentStream = new PDPageContentStream(pdfDoc, pdfPage)) {PDImageXObject pdfImage = PDImageXObject.createFromByteArray(pdfDoc, Files.readAllBytes(imageFile.toPath()), "slide_" + pageNum);contentStream.drawImage(pdfImage, 0, 0);}pageNum++;}pdfDoc.save(outputStream);pdfDoc.close();// Delete temporary image filesfor (File imageFile : imageTempDir.listFiles()) {imageFile.delete();}imageTempDir.delete();System.out.println("PPTX to PDF conversion completed successfully.");} catch (IOException e) {e.printStackTrace();}}
}

http://www.lryc.cn/news/95201.html

相关文章:

  • 2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明
  • 论文笔记--Won’t Get Fooled Again: Answering Questions with False Premises
  • 【Django】include app_name和namespace的区别
  • (黑客)自学笔记
  • 【期末课程设计】学生成绩管理系统
  • 【论文笔记】KDD2019 | KGAT: Knowledge Graph Attention Network for Recommendation
  • ES6:基础使用,积累
  • Android端上传文件到Spring Boot后端
  • 使用GGML和LangChain在CPU上运行量化的llama2
  • 微服务基础理论
  • 《向量数据库指南》:向量数据库Pinecone管理数据教程
  • 以深度为基础的Scikit-learn: 高级特性与最佳实践
  • Autosar MCAL-S32K324Dio配置-基于EB
  • 【Spring Boot】单元测试
  • Flink CEP (一)原理及概念
  • vue3+taro+Nutui 开发小程序(二)
  • Transformer 模型实用介绍:BERT
  • Spring详解(学习总结)
  • 【JavaEE】Spring中注解的方式去获取Bean对象
  • 【基于CentOS 7 的iscsi服务】
  • 解决安装依赖时报错:npm ERR! code ERESOLVE
  • 98、简述Kafka的rebalance机制
  • 【人工智能】监督学习、分类问题、决策树、信息增益
  • Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类
  • HTML与XHTML的不同和各自特点
  • 微服务如何治理
  • 一本通1919:【02NOIP普及组】选数
  • Kubernetes 集群管理和编排
  • DDS协议--[第六章][Discovery]
  • 如何设置iptables,让网络流量转发给内部容器mysql