700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java使用Openoffice将word ppt转换为PDF

Java使用Openoffice将word ppt转换为PDF

时间:2022-06-17 19:56:00

相关推荐

Java使用Openoffice将word ppt转换为PDF

最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览。

OpenOffice

是一套跨平台的办公室软件套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等操作系统上执行。它与各个主要的办公室软件套件兼容。 是自由软件,任何人都可以免费下载、使用、及推广它。

下载地址

/

JodConverter

jodconverter-2.2.2.zip 下载地址:

/projects/jodconverter/files/JODConverter/

Word转换

启动OpenOffice的服务

进入openoffice安装目录,通过cmd启动一个soffice服务,启动的命令是soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;"

如果觉得后台运行OpenOffice服务比较麻烦,可以通过

运行代码

public class PDFDemo {public static boolean officeToPDF(String sourceFile, String destFile) {try {File inputFile = new File(sourceFile);if (!inputFile.exists()) {// 找不到源文件, 则返回falsereturn false;}// 如果目标路径不存在, 则新建该路径File outputFile = new File(destFile);if (!outputFile.getParentFile().exists()) {outputFile.getParentFile().mkdirs();}//如果目标文件存在,则删除if (outputFile.exists()) {outputFile.delete();}DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);connection.connect();//用于测试openOffice连接时间System.out.println("连接时间:" + df.format(new Date()));DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);converter.convert(inputFile, outputFile);//测试word转PDF的转换时间System.out.println("转换时间:" + df.format(new Date()));connection.disconnect();return true;} catch (ConnectException e) {e.printStackTrace();System.err.println("openOffice连接失败!请检查IP,端口");} catch (Exception e) {e.printStackTrace();}return false;}public static void main(String[] args) {officeToPDF("E:\\test.docx", "E:\\test.pdf");}}

Word、ppt转Html

只需要将后缀名从.pdf改为.html即可。

public static void main(String[] args) {officeToPDF("E:\\test.docx", "E:\\test.html");}

Maven配置

Maven依赖

<dependency><groupId>com.artofsolving</groupId><artifactId>jodconverter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.4.3</version></dependency>

Maven只有 2.2.1版本,2.2.1版本有一个问题,那就是不兼容docx和pptx,如果你们不使用jodconverter-2.2.2 中lib,而想要使用2.2.1版本,需要修改一下BasicDocumentFormatRegistry类中的getFormatByFileExtension方法:

新建包com.artofsolving.jodconverter新建类BasicDocumentFormatRegistry,复制下面代码

package com.artofsolving.jodconverter;/*** @author 李文浩* @date /12/25*/import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class BasicDocumentFormatRegistry implements DocumentFormatRegistry {private List documentFormats = new ArrayList();public BasicDocumentFormatRegistry() {}public void addDocumentFormat(DocumentFormat documentFormat) {this.documentFormats.add(documentFormat);}protected List getDocumentFormats() {return this.documentFormats;}public DocumentFormat getFormatByFileExtension(String extension) {if (extension == null) {return null;} else {if (extension.indexOf("doc") >= 0) {extension = "doc";}if (extension.indexOf("ppt") >= 0) {extension = "ppt";}if (extension.indexOf("xls") >= 0) {extension = "xls";}String lowerExtension = extension.toLowerCase();Iterator it = this.documentFormats.iterator();DocumentFormat format;do {if (!it.hasNext()) {return null;}format = (DocumentFormat)it.next();} while(!format.getFileExtension().equals(lowerExtension));return format;}}public DocumentFormat getFormatByMimeType(String mimeType) {Iterator it = this.documentFormats.iterator();DocumentFormat format;do {if (!it.hasNext()) {return null;}format = (DocumentFormat)it.next();} while(!format.getMimeType().equals(mimeType));return format;}}

下面是增加的部分,仅仅增加了将docx按照doc的处理方式处理。而2.2.2版本已经默认增加了。

if (extension.indexOf("doc") >= 0) {extension = "doc";}if (extension.indexOf("ppt") >= 0) {extension = "ppt";}if (extension.indexOf("xls") >= 0) {extension = "xls";}

参考文档

Java实现在线预览–openOffice实现Java项目中使用OpenOffice转PDFjava使用openoffice将office系列文档转换为PDFjava 如何将 word,excel,ppt如何转pdf--jacobjava 如何将 word,excel,ppt如何转pdf --openoffice (1)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。