复制
收藏
提问
全网

java ppt或者pptx文件转换为pdf文件

俊丽空间师
1个月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题java ppt或者pptx文件转换为pdf文件

已完成理解java ppt或者pptx文件转换为pdf文件

展开阅读网页

Java中将PPT或PPTX文件转换为PDF文件的两种主要方法。1

方法概述

  • 方案一:使用Jacob库,适用于Windows服务器。
  • 方案二:使用OpenOffice方案,适用于Linux服务器。

方案一:使用Jacob库

依赖配置

在Maven中引入Jacob库的依赖。

<dependency>
    <groupId>com.jacob</groupId>
    <artifactId>jacob</artifactId>
    <version>1.19</version>
    <scope>system</scope>
    <systemPath>D:/.m2/repo/jacob-1.19/jacob.jar</systemPath>
</dependency>

代码实现

public class PPTApi implements IJacobPdfService {
    private static final Integer PPT_TO_PDF_OPERAND = 32;

    @Override
    public void toPdf(String sourcePath, String targetPath) {
        ActiveXComponent app = null;
        Dispatch ppt = null;
        try {
            ComThread.InitSTA();
            app = new ActiveXComponent("PowerPoint.Application");
            Dispatch ppts = app.getProperty("Presentations").toDispatch();
            ppt = Dispatch.call(ppts, "Open", sourcePath, true, true, false).toDispatch();
            Dispatch.call(ppt, "SaveAs", targetPath, PPT_TO_PDF_OPERAND);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            if (ppt != null) {
                Dispatch.call(ppt, "Close");
            }
            if (app != null) {
                app.invoke("Quit");
            }
            ComThread.Release();
        }
    }
}

方案二:使用OpenOffice方案

依赖配置

使用POI和iText库。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.4.3</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>

代码实现

public class PdfConvertUtil {
    public static boolean pptToPdf(String pptPath, String pdfDir) {
        if (StrUtil.isEmpty(pptPath)) {
            throw new RuntimeException("word文档路径不能为空");
        }
        if (StrUtil.isEmpty(pdfDir)) {
            throw new RuntimeException("pdf目录不能为空");
        }
        String pdfPath = pdfDir + StrUtil.sub(pptPath, pptPath.lastIndexOf(StrUtil.BACKSLASH), pptPath.lastIndexOf(StrUtil.DOT)) + StrUtil.DOT + "pdf";
        Document document = null;
        HSLFSlideShow hslfSlideShow = null;
        FileOutputStream fileOutputStream = null;
        PdfWriter pdfWriter = null;
        try {
            hslfSlideShow = new HSLFSlideShow(new FileInputStream(pptPath));
            Dimension dimension = hslfSlideShow.getPageSize();
            fileOutputStream = new FileOutputStream(pdfPath);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            if (hslfSlideShow != null) {
                hslfSlideShow.close();
            }
            if (fileOutputStream != null) {
                try {
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return true;
    }
}

总结

  • Jacob方案:依赖Microsoft Office,适用于Windows服务器。
  • OpenOffice方案:使用POI和iText库,适用于Linux服务器。12
更专业一些
转笔记
专业
java ppt或者pptx文件转换为pdf文件
不在提醒

更专业内容正在努力生成中
知识树
java ppt或者pptx文件转换为pdf文件
Java文件转换有哪些常用库?
如何选择合适的Java文件转换工具?
Java文件转换的性能优化方法有哪些?
在线客服