文档章节

JodConverter doc转pdf (Debian 8)

norxiva
 norxiva
发布于 2016/07/14 17:24
字数 568
阅读 83
收藏 0
点赞 0
评论 0

环境信息

虚拟机节点(192.168.100.171<debian171>)

Debian jessie 8.5 

Jodconverter 2.2.1

安装libreoffice

#apt安装

sudo apt-get install libreoffice
sudo soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &

#deb安装

tar xvf LibreOffice_5.1.4_Linux_x86-64_deb.tar.gz
cd LibreOffice_5.1.4.2_Linux_x86-64_deb/DEBS/
dpkg -i *.deb
cd /opt/libreoffice5.1/program/
soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &

 如果报“error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory”,需要安装下面的软件包

sudo apt-get install libgl1-mesa-glx

如果报“error while loading shared libraries: libSM.so.6: cannot open shared object file”,需要安装下面的软件包

sudo apt-get install libsm6

参考:http://libre-software.net/how-to-install-libreoffice-on-ubuntu-linux-mint/

 java代码

package surfin.example.jodconverter.simpledemo;

import java.io.File;
import java.net.ConnectException;

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 BootStrap {
	private static final Logger log = LoggerFactory.getLogger(BootStrap.class);

	public static void main(String[] args) {
		
		if(args.length < 2){
			log.info("usage: java -jar surfin-example-jodconverter.jar (source_file) (target_file)");
			return;
		}
		
		
		OpenOfficeConnection connection = null;
		DocumentConverter converter = null;

		try {
			connection = new SocketOpenOfficeConnection(8100);
			connection.connect();
			converter = new OpenOfficeDocumentConverter(connection);

			File inputFile = new File(args[0]);
			File outputFile = new File(args[1]);

			// convert
			converter.convert(inputFile, outputFile);
		} catch (ConnectException e) {
			log.error(e.getMessage(), e);
		} finally {
			if (connection != null) {
				connection.disconnect();
			}
		}

	}

}

中文问题

#复制字体后重启libreoffice

sudo cp simhei.ttf /usr/share/fonts/truetype/openoffice
sudo cp simsun.ttc /usr/share/fonts/truetype/openoffice

注意:存放字体到/usr/lib/libreoffice/share/fonts/truetype和/usr/local/java/jdk1.8.0_92/jre/lib/fonts都没有生效

小结

jodconverter的转换效果不是太尽人意,字体样式会有错位,在window上除字体存在问题外,格式还行,应该与libreoffice和msoffice样式区分有关

其他类似框架:docx4j,xdocreport

docx4j测试代码

public static void main(String[] args) {
	long start = System.currentTimeMillis();

	// 1) Load DOCX into WordprocessingMLPackage
	InputStream is;
	try {
		is = new FileInputStream(new File("d:/test1.docx"));
		WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);

		// 2) Prepare Pdf settings
		PdfSettings pdfSettings = new PdfSettings();

		// 3) Convert WordprocessingMLPackage to Pdf
		OutputStream out = new FileOutputStream(new File("d:/test-docx4j.pdf"));
		PdfConversion converter = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
		converter.output(out, pdfSettings);

		log.info("Generate pdf/HelloWorld.pdf with " + (System.currentTimeMillis() - start) + "ms");
	} catch (FileNotFoundException e) {
		log.error(e.getMessage(),e );
	} catch (Docx4JException e) {
		log.error(e.getMessage(),e );
	}

}

xdocreport代码

long start = System.currentTimeMillis();

// 1) Load DOCX into XWPFDocument
InputStream is;
try {
	is = new FileInputStream(new File("d:/test1.docx"));
	XWPFDocument document = new XWPFDocument(is);

	// 2) Prepare Pdf options
	PdfOptions options = PdfOptions.create();

	// 3) Convert XWPFDocument to Pdf
	OutputStream out = new FileOutputStream(new File("d:/test1-xdoc.pdf"));
	PdfConverter.getInstance().convert(document, out, options);

	log.info("Generate pdf/HelloWorld.pdf with " + (System.currentTimeMillis() - start) + "ms");
} catch (FileNotFoundException e) {
	log.error(e.getMessage(), e);
} catch (IOException e) {
	log.error(e.getMessage(), e);
}

小结

docx4j和xdocreport转换效果还不如jodconverter,样式和内容都会有缺失

参考资料

http://m.myexception.cn/powerdesigner/414230.html

http://wenku.baidu.com/view/79ad1bd4360cba1aa811dadb.html

http://it.chinawin.net/os/article-1d426.html

http://www.it610.com/article/536230.htm

http://slikel.iteye.com/blog/1677579/

http://thexfile0515.blogspot.com/2012/04/jodconverter-microsoft-office-pdf.html

http://5iqiong.blog.51cto.com/2999926/1188961

© 著作权归作者所有

共有 人打赏支持
norxiva
粉丝 0
博文 11
码字总数 5308
作品 0
徐汇
高级程序员
Java GUI实用小工具集 - Common Gui Tools

Common Gui Tools 是用java编写,GUI界面的实用小工具集,1.4版有20个小工具: 1,编码转换:Character Converter 2,加密解密:Encrypt And Decrypt 3,计算文件数字签名:File Digital Si...

bs2004 ⋅ 2013/03/20 ⋅ 3

Common Gui Tools 1.4 发布,Java GUI 实用小工具集

Java GUI实用小工具集 Common Gui Tools 新增:二维码生成解析、时间戳转换、Json格式化、文本文件切分等。 Common Gui Tools 是用java编写,GUI界面的实用小工具集,1.4版有20个小工具: 1,...

bs2004 ⋅ 04/22 ⋅ 0

Centos下安装类百度文库环境

使用php实现百度文库功能,网上搜索到的方案,实现doc转pdf,pdf转swf,然后显示出来。 这里简单的记录下,【doc转pdf,pdf转swf】两个功能的搭建流程。 doc转pdf 使用到下列程序(文件): Ap...

DragonFK ⋅ 2013/02/20 ⋅ 1

jodconverter ,openoffice ,openoffice 实现文档在线预览

public class Test { public static void main(String[] args){ office2pdf2html(); //office2html(); } public static void office2pdf2html() { String sourceFile = "D:\test\xlsTest.xls......

hjjh ⋅ 2016/12/22 ⋅ 0

centos安装openoffice将doc、ppt、txt、xls等转换成pdf,再转换成swf用‍FlexPaper显示

教程 下载:http://www.openoffice.org/download/other.html 下载中文的openoffice和英文的sdk,相关文件已上传到百度网盘中:linux>centos>doc2view 安装openoffice 在CentOs下面会缺少黑体...

爬墙 ⋅ 2016/12/10 ⋅ 0

linux服务器搭建在线预览环境

linux版本 Centos.x86_64 需要下载的工具包 openoffice 下载地址:https://www.openoffice.org/download/other.html 选择 Linux x86_64 rpm chinese简体中文包 解压并安装 安装openoffice ta......

cat_l_fish ⋅ 2014/04/24 ⋅ 2

pdf转swf,ssh下执行正常,用php调用没有任何返回结果,这是为什么?

我配置好了.libreoffice+jodconverter+flexpaper+swftools.在ssh登陆下,doc转pdf,pdf转swf都正常,可是用php的exec函数去调用就一直不成功, 调用java -jar命令的时候 Error occurred during ...

搁浅St ⋅ 2013/06/04 ⋅ 3

大神救我 救救我 在liunx终端运行 java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf 转换成功!

在liunx终端运行 java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf 转换成功! 在php环境中运行exec('java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf')却无效果!......

756609334 ⋅ 2016/07/21 ⋅ 1

php exec('java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf')

在liunx终端运行 java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf 转换成功! 在php环境中运行exec('java -jar /data/jodconverter.jar /data/01.doc /data/01.pdf')却无效果!......

小小卒子 ⋅ 2012/05/21 ⋅ 8

linux openoffice docx转pdf乱码

我把windows下的所有字体都已经拷贝到了/usr/share/fonts下面了,并且jdk的路径下也拷贝了,重启服务器之后,doc文件可以正常的转换成无乱码的pdf,docx文件转换的pdf则是乱码。使用的软件是...

柚子先生1988 ⋅ 2017/08/14 ⋅ 7

没有更多内容

加载失败,请刷新页面

加载更多

下一页

构建自定义组件

#前言 接上篇,因项目需由H5转到小程序,故需打造自定义对话框。而这块需使用到微信小程序的自定义组件功能。 小程序自定义组件 点击此处,可以查看小程序自定义组件的api。 从自定义组件的样...

387 ⋅ 14分钟前 ⋅ 0

Maven 项目添加本地jar包的三种方式

Maven 项目添加本地jar包的三种方式 翻译自3 ways to add local jar to maven project [TOC] 简介 在构建 Maven 项目时,有时候需要导入本地的jar包,本文介绍了三种添加本地jar包的方法。 ...

Os_yxguang ⋅ 14分钟前 ⋅ 0

long超过16位之后浏览器自动截断问题处理。

java前后端交互的过程中,定义的Long字段超过16位之后,js发生截断,从而不能跟后台数据进行匹配。 处理方法 把long型字段转成string进行处理。(可以使用json注解转换或者springmvc统一拦截...

strict_nerd ⋅ 16分钟前 ⋅ 0

一文带你搞定Integer

1.1 前言 Integer是int对应的包装类,它包含一个int类型的字段存储数据,并提供了多个基本操作,能在 int 类型和 String 类型之间互相转换。在Java5中,引入了自动装箱和自动拆箱功能,Java可...

筱虾米 ⋅ 17分钟前 ⋅ 0

Linux kernel脉络和主干总结

写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工...

Markz0928 ⋅ 32分钟前 ⋅ 0

在gcc中使用intel风格的内联汇编

很简单,内联汇编使用asm(“.intel_syntax noprefix/n”)声明一下,以后的内联汇编就可以用intel风格了,构建可执行文件时给gcc加上-masm=intel参数。 先写一个小程序测试一下: [cpp] view...

simpower ⋅ 42分钟前 ⋅ 0

NIO 之 ByteBuffer实现原理

相关文章 BIO、NIO、AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 Channel实现原理 前言 Java NIO 主要由下面3部分组成: Buffer Channel Selector 在传统IO中,流是基于字节的方式进行...

轨迹_ ⋅ 51分钟前 ⋅ 0

Jenkins docker权限问题

环境Ubuntu Server 工具 jenkins-war:2.89.2 报错信息 Cannot connect to the Docker daemon. Is the docker daemon running on this host?Build step 'Execute shell' marked build as fai......

Pulsar-V ⋅ 52分钟前 ⋅ 0

180621-一个简单的时间窗口设计与实现

如何设计一个计数的时间窗口 时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数...

小灰灰Blog ⋅ 今天 ⋅ 0

Android之Dalvik、ART、JIT、AOT

Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[...

lichuangnk ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部