|
前段时间因为公司项目需求,需要将word,excel,图片等合成pdf文档。经过本版斑主clelverpig以及另一位网友的帮助,终于实现了,虽然不是很完善,但已经可以满足一般的的业务需要。现在将实现过程总结一下,希望对有需要的人能有一定的帮助。若有不妥之处请指出,谢谢!
总体上分为以下4步:
1. 利用jacob和java编程实现对word文档向pdf文档的转换。
2. 利用vb6.0实现excel向pdf的转换。(用此途径是由于jacob暂时无法实现excel向pdf的转换)
3. 利用开源jar包itext实现图片向pdf的间接转换。
4. 利用开源jar包itext实现多个pdf文件的合成,并相应按照单个文件生成书签。
源代码在文章结尾处有下载
以下就分别对以上步骤进行详细说明:
1. 利用vb6.0实现excel向pdf的转换。说明:
这一步,斑主clelverpig所发表的文章上已经说得很详细,这里就不再缀述了。http://www.matrix.org.cn/resource/article/43/43923_jacob_word_PDF.html
当然只要能用word程序正常打开的文件都可以用这个方法实现转换,如txt,rtf,htm,html等文件。
2.利用vb6.0实现excel向pdf的转换。说明:
1)、建工程时,需要要引用下面的两个库:Acrobat Distiller和Microsoft Excel 11.0 Object Library;vb工程源代码见文章下方的下载;
2)、该小程序共有2个方法,GetCommandLine(Optional MaxArgs)方法用于接收命令行参数,若是在java中调用,则是代码中的参数。Form_Load()方法用于调用该小程序时执行的动作,即将第一个参数(被转换的excel文件全路径)所指向的文件转换成第二个参数(目标pdf文件全路径,不带后缀名);
3)、该小程序需编译成exe文件放到指定目录,以供java中调用,调用方法如下(若VB生成的可执行文件、源excel文件及目标文件都在d盘根目录下,注意,第二个参数不带后缀名):
Process child = Runtime.getRuntime().exec("cmd /c d:/exceltopdf.exe d:/a.xls d:/b");//执行脚本文件
InputStream child_in = child.getInputStream();
int c;
while ((c = child_in.read()) != -1) {}
child_in.close();
异常自己捕获,若运行正常,则会弹出和使用jacob转word文档类似的提示对话框,提示正在打印…的信息;
3. 利用开源jar包itext实现图片向pdf的间接转换。说明:
1)、支持的图片为一般常使用的图片,有:jpg,gif,png,tif,bmp等,这几种我都试过,能够实现;
2)、需要注意的是,此方法并不是实现转换功能,只是将一个图片追加到一个空白的pdf文件尾,但其结果一样,且速度比转换来得快,所以不失为一个好方法。图片大小不好控制,因此新建pdf文件时可将尺寸建大些,在源代码中会有相应说明ContactPdf.java;
3)、itext开源包可到http://www.lowagie.com/iText/download.html下载,上面有很多示例,我就是按照那些示例学习的。
4.利用开源jar包itext实现多个pdf文件的合成,并相应按照单个文件生成书签。说明:
1)、contact方法有三个参数,第一个为书签数组名,与源文件名数组分别相应,第二个数为源文件名数组(源文件的完整路径),每三个参数为最终生成的目标pdf文件名(完整路径);详见源代码类ContactPdf.java;具体请根据实际情况修改再运行;
2)、另外必须写一个类似于监听听器的类,名为ParagraphEvent,目的是为了在拼接pdf文件同时生成书签,详见源代码:ParagraphEvent.java;
相关源代码下载: http://www.matrix.org.cn/resource/upload/article/2006_01_04_142606_WouhAYHDin.rar http://www.matrix.org.cn/resource/upload/article/2006_01_04_142621_eKXeSrirWI.rar http://www.matrix.org.cn/resource/upload/article/2006_01_04_142629_duOXfsUydI.rar
相关链接: 1.cleaverpig的文章: http://www.matrix.org.cn/resource/article/43/43923_jacob_word_PDF.html 2.itext下载点:http://www.lowagie.com/iText/download.html
|