最近一个项目,客户要求输出到XLS文件,等开发的差不多了之后,希望还能输出到PDF,真是。。。

当然现在开源软件,这么多,这都不算啥,主要的大路有两条:

一,直接通过itext或者PDFbox之类的,重新再实现一遍,当然这个比较费力,这里不再叙述了。

二,通过输出的XLS文件,直接转到PDF,这个比较的省力,稍微调查了下,方法有很多,我们主要介绍这条大路。

稍微列举一下,

1,使用Office的SDK套件,2007以后的EXCEL Object(12.0+?)应该可以直接保存成PDF。

    微软的东西,优势嘛,肯定是一致性了,和你Office通过另存生成的PDF因为调用的模块一样,显然输出的结果也是一样一样的。劣势,微软的东西,微软依存,Linux,java什么的基本没戏,而且微软官方声明Office的SDK设计基于用户交互,所以用它开发服务端微软自己也不推荐,因为比如遇到密码弹个对话框出来的现象是一定的。

2,使用OpenOffice的功能

    首先本地或者局域网安装有OpenOffice或者LibreOffice,其实是一套东西。其实这个转换就是调用OpenOffice的功能。使用一个叫jodconverter的JAR包,虽然已经停止维护了,但是还是能正常工作,其实这个JAR就是启动一下OpenOffice并且把操作对象文件通过一个端口传送到OpenOffice处理。

实现方法:

	public static void method2() {
		DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
		//config.setOfficeHome("C:\\Program Files (x86)\\OpenOffice 4");
		config.setOfficeHome("C:\\Program Files (x86)\\LibreOffice 5");
		config.setPortNumber(8100);
		OfficeManager officeManager = config.buildOfficeManager();
		officeManager.start();
		OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
		converter.convert(new File(strInFilePath), new File(strOutFilePath2));
		officeManager.stop();
	}

3,使用第三方的Java库类

	http://www.aspose.com/

用试用版测试了一下,这个实现起来比较简单,且效果和Office一致。

正在评估购买,一个开发者Linsence大概999美元,考虑到公司开发一套的成本,似乎价格很合理。可以商业部署。

具体实现就两行

	String strInFilePath = "D://Demo.xlsx";
	String strOutFilePath1 = "D://Demo1.pdf";
	workbook = new Workbook(strInFilePath);
	workbook.save(strOutFilePath1);

 

最后修改日期: 2016年10月19日

作者