概述
Office2Pdf工具开发
@(工程开发)
近期,由于公司内部有个组件需要完成word转pdf的功能,在网上做了基本的了解和测试,发现OpenOffice+JobConverter是比较稳定有效的方案。记录如下
- Office2Pdf工具开发
- OpenOffice简介
- 安装
- 启动
- JobConverter简介
- 测试
- OpenOffice启动和关闭
- windows
- linux
- OpenOffice启动和关闭
- Java代码
- ew使用jacob开发
- OpenOffice简介
OpenOffice简介
OpenOffice是Apache的开源软件,对标产品是Microsoft的Office365。…
OpenOffice4已经与Office2007版本的格式对标,即已经支持docx、 xlsx等文件格式。故这里我们采用新版本OpenOffice4——发现jodconvert不能支持。
OpenOffice下载地址为https://www.openoffice.org/download/index.html
安装
下载RPM安装包,上传到服务器,然后使用tar解压
tar -zxvf Apache_OpenOffice_4.1.2_Linux_x86-64_install-rpm_zh-CN.tar.gz
进入zh-CN路径,然后执行
yum localinstall RPMS/*.rpm
OK,默认路径是/opt/openoffice4/program
启动
安装完成直接启动Openoffice服务:
临时启动
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
一直后台启动
nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
JobConverter简介
…
测试
OpenOffice启动和关闭
windows
启动,进入安装路径{openOffice}/program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
关闭
taskkill /im soffice.exe /f
linux
启动
关闭
进程监控脚本
设置为开机启动
Java代码
package word2pdf;
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
public class Office2PdfUtil {
private static final Logger logger = LoggerFactory.getLogger(Office2PdfUtil.class);
/**
* 已经事先启动的前提下
* @param input
* @param output
*/
public static void convert(String input, String output) {
File inputFile = new File(input);
File outputFile = new File(output);
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
logger.info("connect to OpenOffice ...");
connection.connect();
logger.info("start converting ...");
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
logger.info("finish converting ...");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (connection != null) {
connection.disconnect();
logger.info("close down connection ...");
connection = null;
}
} catch (Exception e) {
}
}
}
public static int office2PDF(String sourceFile, String destFile) {
String OpenOffice_HOME = "C:\Program Files (x86)\OpenOffice.org 3\";// 这里是OpenOffice的安装目录
// 假如从文件中读取的URL地址最后一个字符不是 '',则添加''
if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\') {
OpenOffice_HOME += "\";
}
Process pro = null;
try {
// 启动OpenOffice的服务
String command = OpenOffice_HOME
+ "program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
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(new File(sourceFile), new File(destFile));
// close the connection
connection.disconnect();
// 封闭OpenOffice服务的进程
pro.destroy();
return 0;
} catch (Exception e) {
e.printStackTrace();
return -1;
} finally {
pro.destroy();
try {
String closeSofficeCmd="taskkill /f /im soffice.exe";
Process process = Runtime.getRuntime().exec(closeSofficeCmd);
logger.info("openoffice正常关闭.......");
} catch (Exception e2) {
logger.error("soffice关闭失败... {}", e2);
}
}
}
/**
* 测试main方法
*
* @param args
*/
public static void main(String[] args) {
String input = "C:\Users\jason\Desktop\爬虫监控产品需求说明书模板_v1.0(修改6).doc";
String output = "C:\Users\jason\Desktop\爬虫监控产品需求说明书模板_v1.0(修改6).pdf";
//Office2PdfUtil.convert(input, output);
Office2PdfUtil.office2PDF(input, output);
}
}
[ew]使用jacob开发
http://wang-ping001.iteye.com/blog/1452057
该方式在Windows操作系统下有非常优秀的转换效率和低样式扰动。但是,暂时没有看到支持Linux操作系统。使用时,记得将jacob.dll文件放置在jdkbin路径下
最后
以上就是想人陪飞鸟为你收集整理的Office2Pdf工具开发Office2Pdf工具开发的全部内容,希望文章能够帮你解决Office2Pdf工具开发Office2Pdf工具开发所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复