在公文审批流转过程中,用户需要实时查看所审批的呈批件的内容,这些呈批件都是doc或者docx格式的word文件,所以就使用openoffice将word文件转换成pdf文件,然后使用专门的pdf阅读插件来查看文件内容。
在转换过程中,遇到了2个问题:
(1)openoffice服务未开启,需要手动使用cmd命令开启,然后才可以转换;
(2)openoffice服务开启后。占用内存过大。
对于第一个问题,可以使用Java提供的相关接口来完成openoffice服务的开启,对于第二个问题,可以在转换完成后,关闭openoffice的进程。
代码示例如下:
package com.kingt; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.ConnectException; import java.util.Properties; import com.artofsolving.jodconverter.DocumentConverter; import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; /** * 将Office文档转换为PDF文档 * * @author Kingt.W * */ public class Office2PDF { /** * 环境变量下面的url.properties的绝对路径 */ private static final String RUL_PATH = Thread.currentThread().getContextClassLoader().getResource("").getPath() .replace("%20", " ") + "url.properties"; /** * 将Office文档转换为PDF. 运行该函数需要用到OpenOffice, OpenOffice下载地址为 * http://www.openoffice.org/ * * <pre> * 方法示例: * String sourcePath = "F:\\office\\source.doc"; * String destFile = "F:\\pdf\\dest.pdf"; * Converter.office2PDF(sourcePath, destFile); * </pre> * * @param sourceFile * 源文件, 绝对路径. 可以是Office2003-2007全部格式的文档, Office2010的没测试. 包括.doc, * .docx, .xls, .xlsx, .ppt, .pptx等. 示例: F:\\office\\source.doc * @param destFile * 目标文件. 绝对路径. 示例: F:\\pdf\\dest.pdf * @return 操作成功与否的提示信息. 如果返回 -1, 表示找不到源文件, 或url.properties配置错误; 如果返回 0, * 则表示操作成功; 返回1, 则表示转换失败;返回-2表示连接OpenOffice服务失败 */ public static int office2PDF(String sourceFile, String destFile) { try { File inputFile = new File(sourceFile); if (!inputFile.exists()) { return -1;// 找不到源文件, 则返回-1 } // 如果目标路径不存在, 则新建该路径 File outputFile = new File(destFile); if (!outputFile.getParentFile().exists()) { outputFile.getParentFile().mkdirs(); } /* * 从url.properties文件中读取OpenOffice的安装根目录, OpenOffice_HOME对应的键值. * 我的OpenOffice是安装在D:\Program Files\OpenOffice.org 3下面的, 如果大家的 * OpenOffice不是安装的这个目录下面,需要修改url.properties文件中的 OpenOffice_HOME的键值. * 但是需要注意的是:要用"\\"代替"\",用"\:"代替":" . 如果大家嫌麻烦, * 可以直接给OpenOffice_HOME变量赋值为自己OpenOffice的安装目录 */ Properties prop = new Properties(); FileInputStream fis = null; fis = new FileInputStream(RUL_PATH);// 属性文件输入流 prop.load(fis);// 将属性文件流装载到Properties对象中 fis.close();// 关闭流 String OpenOffice_HOME = prop.getProperty("OpenOffice_HOME"); if (OpenOffice_HOME == null) return -1; // 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\' if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') { OpenOffice_HOME += "\\"; } // 启动OpenOffice的服务 String command = OpenOffice_HOME + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard"; Process pro = Runtime.getRuntime().exec(command); // connect to an OpenOffice.org instance running on port 8100 OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100); connection.connect(); // convert DocumentConverter converter = new OpenOfficeDocumentConverter(connection); converter.convert(inputFile, outputFile); // close the connection connection.disconnect(); // 关闭OpenOffice服务的进程 pro.destroy(); return 0; } catch (FileNotFoundException e) { e.printStackTrace(); return -1; } catch (ConnectException e) { e.printStackTrace(); return -2; } catch (IOException e) { e.printStackTrace(); } return 1; } }
相关推荐
Java使用OpenOffice转换Office文档为PDF是一种常见的技术需求,尤其在企业级应用中,为了保持一致性和跨平台兼容性,可能会需要将Word、Excel或PowerPoint文档转换为PDF格式。以下将详细介绍如何在Java环境中利用...
JODConverter是基于OpenOffice的Java转换器,可以将Word、Excel、PowerPoint文档转换为PDF或者其他OpenDocument格式。这个压缩包中的jar包可能就包含了JODConverter的相关组件。 使用JODConverter进行转换的基本...
通过以上步骤,你就可以在Java项目中使用OpenOffice和JODConverter库将Word文档转换为PDF。这不仅方便了数据交换,还能够确保格式的一致性和兼容性。如果你需要处理的文档格式多样,这是一个非常实用的工具。记得在...
- 或者,如果你选择使用命令行工具,如`unoconv`或`libreoffice`,可以在Java中通过Runtime.exec()执行这些命令,将Word文件转换为PDF。这通常会更简单,因为你只需处理命令的输入和输出。 5. **引入Jar包**: ...
Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...
4. **HTML到Word/PDF转换**:OpenOffice或LibreOffice可以接收HTML输入并生成Word或PDF文件,这对于从网页内容生成报告或手册非常有用。 5. **Word到PDF转换**:通过OpenOffice Writer,可以打开一个Word文档,然后...
总的来说,Java通过OpenOffice实现文档转PDF是一种有效的方法,尤其适用于已经使用Java开发的系统。这种解决方案不仅支持多种文档格式,而且具有良好的可扩展性和灵活性,可以根据项目需求进行定制。通过理解并掌握...
本文将详细讲解如何使用OpenOffice进行转换,并探讨相关技术。 首先,让我们了解PDF和HTML这两种格式的特点。PDF(Portable Document Format)是一种通用的文件格式,能够保留原始文档的样式和布局,方便阅读和打印...
基于openoffice实现的将word文件转换为PDF文件。 DocConverter.java是代码实现 controller.txt中写了简单的使用方法 所需jar包中提供了一些必须导入的jar包。 仅提供了核心部分代码,因为是从项目中提取出来的,测试...
这个工具的强大之处在于它不仅能够创建和编辑这些类型的文档,还支持文件格式的互转,包括将Word、Excel、PowerPoint等Microsoft Office格式的文件转换为PDF。 转换过程主要依赖于OpenOffice的API(应用程序编程...
OpenOffice的Java接口主要由JODConverter库提供,这是一个基于LibreOffice或OpenOffice的Java转换工具,支持多种文档格式之间的转换,包括将ODT、DOC、XLS等转换为PDF。JODConverter的使用极大地方便了开发人员,...
本项目提供的就是一个Java调用OpenOffice将Office文档转换为PDF的jar包。 OpenOffice API是Java中用于与OpenOffice进行通信的接口,它允许开发者在Java程序中控制OpenOffice的运行,例如打开文档、修改内容以及执行...
此外,由于标签中提到了“pdf”,这个项目可能还提供了将Word转换为PDF的功能。这通常是通过先将Word转换为中间格式(如ODT),然后再转换为PDF的方式来实现的。 总结来说,这是一个利用Java调用OpenOffice服务实现...
本文将深入探讨如何使用ASP.NET结合OpenOffice库来实现Word、Excel和PDF文档到PDF的转换,并在此过程中添加水印功能。OpenOffice是一款开源的办公软件套件,它提供了API,允许开发者通过编程方式与之交互,进行文档...
开发者首先需要设置好环境,包括安装OpenOffice或LibreOffice,然后根据需求编写Java代码,使用Apache POI读取Word文档,通过JODConverter转换成PDF,最后使用SwfTools的pdf2swf工具将生成的PDF转换为SWF。...
JODConverter是基于OpenOffice的Java转换工具,它可以方便地将各种办公文档格式转换为PDF或其他格式。在Java项目中,我们可以通过添加JODConverter的依赖来使用这个功能。 1. **集成JODConverter**:在Java项目中,...
5. **转换过程**: 使用Java转PDF时,通常首先打开文档,然后通过OpenOffice API创建一个新的PDF输出流,最后调用转换方法将源文档格式转换为PDF,并将结果写入输出流。 6. **性能优化**: 大量转换时,OpenOffice...
根据网上的资料总结的一个springboot 转换pdf Word文档大小最好2m以下 需要安装OpenOffice.org 3.3 链接:https://pan.baidu.com/s/1onrkhBCNlGLEmf3hPwzXWw 密码:8h5a
开发者需要将PDF.js集成到他们的网页项目中,通过Ajax或者Fetch API获取转换后的PDF文件,然后利用PDF.js的API加载和展示PDF内容。 文件列表中的"office2pdf-view-master"可能是一个项目仓库名,暗示了这个项目专注...