`

Java使用OpenOffice将word转换为pdf文件

    博客分类:
  • Java
 
阅读更多

在公文审批流转过程中,用户需要实时查看所审批的呈批件的内容,这些呈批件都是doc或者docx格式的word文件,所以就使用openofficeword文件转换成pdf文件,然后使用专门的pdf阅读插件来查看文件内容。

在转换过程中,遇到了2个问题:

1openoffice服务未开启,需要手动使用cmd命令开启,然后才可以转换;

2openoffice服务开启后。占用内存过大。

对于第一个问题,可以使用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

    Java使用OpenOffice转换Office文档为PDF是一种常见的技术需求,尤其在企业级应用中,为了保持一致性和跨平台兼容性,可能会需要将Word、Excel或PowerPoint文档转换为PDF格式。以下将详细介绍如何在Java环境中利用...

    java OpenOffice wordExcel转换PDF

    JODConverter是基于OpenOffice的Java转换器,可以将Word、Excel、PowerPoint文档转换为PDF或者其他OpenDocument格式。这个压缩包中的jar包可能就包含了JODConverter的相关组件。 使用JODConverter进行转换的基本...

    Java利用OpenOffice将word等office文档转换成PDF(附件在最后)

    通过以上步骤,你就可以在Java项目中使用OpenOffice和JODConverter库将Word文档转换为PDF。这不仅方便了数据交换,还能够确保格式的一致性和兼容性。如果你需要处理的文档格式多样,这是一个非常实用的工具。记得在...

    JAVA实现Linux中word转换pdf

    - 或者,如果你选择使用命令行工具,如`unoconv`或`libreoffice`,可以在Java中通过Runtime.exec()执行这些命令,将Word文件转换为PDF。这通常会更简单,因为你只需处理命令的输入和输出。 5. **引入Jar包**: ...

    java利用openoffice,把word,execl,ppt转成图片,

    Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...

    利用OpenOffice对html、word、pdf进行转换

    4. **HTML到Word/PDF转换**:OpenOffice或LibreOffice可以接收HTML输入并生成Word或PDF文件,这对于从网页内容生成报告或手册非常有用。 5. **Word到PDF转换**:通过OpenOffice Writer,可以打开一个Word文档,然后...

    Java使用open office实现各种文档转pdf

    总的来说,Java通过OpenOffice实现文档转PDF是一种有效的方法,尤其适用于已经使用Java开发的系统。这种解决方案不仅支持多种文档格式,而且具有良好的可扩展性和灵活性,可以根据项目需求进行定制。通过理解并掌握...

    OpenOffice转换Office文档为PDF、HTML

    本文将详细讲解如何使用OpenOffice进行转换,并探讨相关技术。 首先,让我们了解PDF和HTML这两种格式的特点。PDF(Portable Document Format)是一种通用的文件格式,能够保留原始文档的样式和布局,方便阅读和打印...

    JAVA基于openOffice实现word转PDF简单示例

    基于openoffice实现的将word文件转换为PDF文件。 DocConverter.java是代码实现 controller.txt中写了简单的使用方法 所需jar包中提供了一些必须导入的jar包。 仅提供了核心部分代码,因为是从项目中提取出来的,测试...

    OpenOffice实现word、excel、ppt等文本文件转换pdf

    这个工具的强大之处在于它不仅能够创建和编辑这些类型的文档,还支持文件格式的互转,包括将Word、Excel、PowerPoint等Microsoft Office格式的文件转换为PDF。 转换过程主要依赖于OpenOffice的API(应用程序编程...

    使用openoffice转换PDF工具类及所有jar包

    OpenOffice的Java接口主要由JODConverter库提供,这是一个基于LibreOffice或OpenOffice的Java转换工具,支持多种文档格式之间的转换,包括将ODT、DOC、XLS等转换为PDF。JODConverter的使用极大地方便了开发人员,...

    java调用openOffice转换office为pdf的jar包

    本项目提供的就是一个Java调用OpenOffice将Office文档转换为PDF的jar包。 OpenOffice API是Java中用于与OpenOffice进行通信的接口,它允许开发者在Java程序中控制OpenOffice的运行,例如打开文档、修改内容以及执行...

    openoffice调用word生成html.rar

    此外,由于标签中提到了“pdf”,这个项目可能还提供了将Word转换为PDF的功能。这通常是通过先将Word转换为中间格式(如ODT),然后再转换为PDF的方式来实现的。 总结来说,这是一个利用Java调用OpenOffice服务实现...

    asp.net利用OpenOffice转换WORD/EXCEL/PDF为PDF,加水印源码

    本文将深入探讨如何使用ASP.NET结合OpenOffice库来实现Word、Excel和PDF文档到PDF的转换,并在此过程中添加水印功能。OpenOffice是一款开源的办公软件套件,它提供了API,允许开发者通过编程方式与之交互,进行文档...

    java代码将word转pdf,pdf转swf 操作文档及代码

    开发者首先需要设置好环境,包括安装OpenOffice或LibreOffice,然后根据需求编写Java代码,使用Apache POI读取Word文档,通过JODConverter转换成PDF,最后使用SwfTools的pdf2swf工具将生成的PDF转换为SWF。...

    java word转pdf

    JODConverter是基于OpenOffice的Java转换工具,它可以方便地将各种办公文档格式转换为PDF或其他格式。在Java项目中,我们可以通过添加JODConverter的依赖来使用这个功能。 1. **集成JODConverter**:在Java项目中,...

    java转为PDF的效果(openoffice)

    5. **转换过程**: 使用Java转PDF时,通常首先打开文档,然后通过OpenOffice API创建一个新的PDF输出流,最后调用转换方法将源文档格式转换为PDF,并将结果写入输出流。 6. **性能优化**: 大量转换时,OpenOffice...

    springboot 文件转换PDF多线程

    根据网上的资料总结的一个springboot 转换pdf Word文档大小最好2m以下 需要安装OpenOffice.org 3.3 链接:https://pan.baidu.com/s/1onrkhBCNlGLEmf3hPwzXWw 密码:8h5a

    office文档通过openoffice或者microsoft多线程转换成pdf文档并通过pdfjs显示

    开发者需要将PDF.js集成到他们的网页项目中,通过Ajax或者Fetch API获取转换后的PDF文件,然后利用PDF.js的API加载和展示PDF内容。 文件列表中的"office2pdf-view-master"可能是一个项目仓库名,暗示了这个项目专注...

Global site tag (gtag.js) - Google Analytics