浅议基于Java的PDF文档生成

ComputerKnowledgeandTechnology电脑知识与技术第7卷)24期and年8月ISSN1009-3044Computer第Knowledge(2011Technology电脑知识与技术Vol.7,No.24,August2011.E-mail:xsjl@ccccwwdnzsTel:+86-551-56909635690964浅议基于Java的PDF文档生成崔永1,2,王建新1(1.中南大学信息科学与工程学院,湖南长沙410083;2.中南大学图书馆,湖南长沙410083)摘要:介绍了目前Java项目中生成PDF文档使用的几种主要工具,并对它们进行了简单的分析,介绍了一种新的工具FlyingSaucer并描述了其特性,通过实例介绍了如何使用FlyingSaucer动态生成PDF文档。关键词:Java;PDF;FlyingSaucer:TP319文献标识码:A:1009-3044(2011)24-5923-02DiscussiononGeneratingPDFDocumentsBasedonJavaCUIYong1,2,WANG激an-xin1(1.InformationScienceanDEngineeringSchoolofCentralSouthUniversity,Changsha410083,China;2.LibraryofCentralSouthUniver-sity,Changsha410083,China)Abstract:ThispaperintroDuceDseveralpopulartoolkitstogeneratePDFDocumentsinJavaproject,anDsimplyanalyzeDthem,introDuceDanewtoolkitnameDFlyingSauceranDDescribeDthefeatures,introDuceDhowtogenerateDynamicPDFDocumentsviaFlyingSaucerbygivenanexample.Keywords:Java;PDF;FlyingSaucer1问题的提出作者在实际开发过程中遇到这样一个问题:如何把数据库中的相关数据组织起来生成PDF文档用来传递以及存档。该项目使用Java开发,需要一个基于Java的开源的免费的能生成丰富内容及样式的工具来实现。经过多方面检索发现,目前在基于Java项目中,生成PDF的主要使用到以下几种工具:1)iText[1]iText是一个用于生成PDF文档的Java类库,使用iText的API可以很轻易的创建PDF文档,也可以将XML、Html文件转化为PDF文档。iText是一个基础类库,有些工具是基于iText完成的。2)JasperReport[2]JasperReport是开源的,完全使用Java写成的类库,它是基于iText的,但是比iText要完善很多。它有图形化的工具定义文档,然后通过不同的数据源来填充文档wwyx00(教你如何将PDF文档转换成word文档)。3)Adobe提供的FDFAPI[3]JavaFDF开发工具是Adobe公司提供的动态生成PDF文档的工具,它提供了一系列的API对PDF模板中的表单进行操作。通过对以上三种工具的分析,可以将生成PDF文档归纳成两种途径:直接创建PDF文档;通过模板加数据进行整合生成PDF文档。直接创建PDF需要掌握很多API的细节,太过繁琐,而且不能直观的控制格式,不便于生成复杂的PDF文档。预定义PDF文档的样式,再用相关数据进行填充是较为理想的方法。iText可以将XML、Html转化为PDF文档,这就可以使用某些模板引擎(例如Freemarker、Velocity),先做好模板,再填充相关数据生成XML或Html文件,然后使用iText将其转化成为PDF文档。事实上,这样是可行的,但是存在一些问题,如iText不支持CSS以及无法识别某些HTML的标记,这使得PDF文档的表现力有所欠缺。JasperReport是基于iText的,理论上来说应该做的比iText好,但是它的文档是需要付费的,而且需要对JasperReport的每个元素都非常熟悉才能做出合适的模板。至于adobe的JavaFDF开发工具,能够查到的相关资料很少,作者也没有找到相关的程序进行测试,不予以评价。在开源的框架下,有没有合适的方案达到要求,下面介绍一个基于FlyingSaucer[2]的方案。2FlyingSaucer介绍wwdn08(教你怎么把PDF转换成word)Flyingsaucer是一个XML/CSS渲染器,它使用XML或XHTML文件作为输入,通过CSS控制格式和样式,渲染成图像、PDF文件或者使用Swing或SWT直接呈现在屏幕上(通过iText)。它由纯Java语言编写,完全兼容CSS2.1包括扩展属性,实现了部分CSS3特性,支持XHTML表单。3开发示例总体思路:先根据所选的模板引擎(本项目中使用Freemarker)做好模板,调用引擎生成相应的html文件,再通过FlyingSaucer提供的API将html文件转换成PDF文件,最后将此文件发送给客户端浏览器。收稿日期:2011-06-15作者简介:崔永(1981-),男,中南大学信息科学与工程学院工程硕士,主要研究方向为信息系统技术。本栏目责任编辑:谢媛媛软件设计开发5923Comput...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?