复制
收藏
提问
全网
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;
}
}
总结
更专业一些
转笔记
专业
java ppt或者pptx文件转换为pdf文件不在提醒