我是靠谱客的博主 想人陪飞鸟,最近开发中收集的这篇文章主要介绍Office2Pdf工具开发Office2Pdf工具开发,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Office2Pdf工具开发

@(工程开发)

近期,由于公司内部有个组件需要完成word转pdf的功能,在网上做了基本的了解和测试,发现OpenOffice+JobConverter是比较稳定有效的方案。记录如下

  • Office2Pdf工具开发
    • OpenOffice简介
      • 安装
      • 启动
    • JobConverter简介
    • 测试
      • OpenOffice启动和关闭
        • windows
        • linux
    • Java代码
    • ew使用jacob开发

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工具开发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部