这两天开始学iText做pdf报表了。
我以前都是用ireport设计报表的,不敢说会用,但起码略懂(还曾设计过某特著名高校的本科生学位证、毕业证等)。最近设计的pdf报表的问题却把我搞的无从下手:有些field中的文字是重叠出现的,不是某个field全是这样,是偶尔出现。
没法子,只能改了。决定用iText,虽然说jasper封装的是iText,但还是要试试。万幸,用了iText,这个问题没有再出现了。
下面说说这两天用iText解决的以及没解决的问题(我下载的是itext-5.1.0):
1.错误信息:com.itextpdf.text.DocumentException: Font "STSongStd-Light" with "UniGB-UCS2-H" is not recognized。这是因为亚洲字体包没引入或引入了老版本的亚洲字体包(我当时就是从ireport中直接拿来这个包的,ireport用的是iText2.1.7,所以这个亚洲字体包是老版本的)。iText从5.0更改了包名,和以前的亚洲字体包不配套了。 去http://sourceforge.net/projects/itext/files/extrajars/下载extrajars-XX.zip,新的亚洲字体包就在这里面。请参照iText中的notice.txt文件。
2 .用table.getDefaultCell()设置的属性,并没有实现预想的效果。这个问题就没搞定,最后逐一设置的cell的属性。
3.大表格加入内存回收功能后,部分页面没有表头或多个表头。这个问题可就“神奇”了。首先,它居然把我不停地报内存溢出的问题搞定了(呵呵,这是它的功能所在,也是必须的);其次,居然有些页面没有表头。代码如下所示: int fregmentSize = 1017;// 定义每一段落的行数(用于释放内存) for (int i = 0; i < dataList.size(); i++) { if (i % fregmentSize == fregmentSize - 1) { document.add(table); table.deleteBodyRows(); table.setSkipFirstHeader(true); } ………… }
本来我定义的 fregmentSize 值是100,结果发现有些页面没有表头。这是因为清理table时正好达到页尾,即下一条数据需要在新的一页显示。这时table.setSkipFirstHeader(true)设置了表头不显示……悲剧了。可是如果设置显示表头table.setSkipFirstHeader(false),那么每次清理表格就会显示一次表头(pdf中就会一页中显示多个表头),显然更不合理。最后更改了fregmentSize 的值,以减少这样事情的发生。希望有解决这个问题的朋友能给留个解决方法。
4.在学习中会有一些例子中遇到RtfWriter2、HtmlWriter就不要深研究了。因为这两东西从5.0已经从itext中独立出来了。我在网上好不容找到iText-rtf包,还是老版本的,没下载。sourceForge中有这个项目,但却没有提供jar,有个svn项目:
<!--EndFragment-->
分享到:
相关推荐
总结起来,IText是一个功能丰富的Java库,用于处理PDF和RTF文档,尤其是`itext-asian-5.2.0.jar`对于亚洲语言的支持,使得在中文环境下的应用更加得心应手。通过学习和掌握IText,开发者可以有效地提高工作效率,...
开始学习Itext时,建议首先阅读中文使用说明,了解基本概念和操作。然后,通过API文档查找具体功能的实现方法,结合示例代码进行实践。当遇到复杂问题或需要进行高级操作时,查阅中文参考手册将大有裨益。 **总结**...
iText是一款强大的PDF库,主要用于在Java环境中创建、编辑和修改PDF文档。它以其灵活性和易用性在IT行业中被广泛应用,特别是在报表打印和...通过不断学习和实践,你将能够熟练运用iText解决实际问题,提高项目效率。
开发者可以通过这些文档快速学习如何使用iText的各种功能,解决遇到的问题,或者查找特定API的用法。文档通常以HTML或PDF格式提供,方便在线浏览或离线阅读。 在实际开发中,iText 2.1.7可以用于多种场景,如报表...
总结来说,"freemarker+itext生成PDF"的主题涵盖了使用FreeMarker模板引擎和Itext库在Java环境中动态生成PDF的技术。这是一项实用技能,对于需要自动化生成PDF文档的项目非常有价值。通过学习和实践这个主题,开发者...
iText是一款开源的Java库,主要用于创建和修改PDF文档,而iText-asian则是其针对亚洲文字特性的增强版,解决了在PDF中正确显示和处理东亚字符集的问题。 首先,我们要理解iText的基本功能。iText提供了一系列API,...
- **官方文档**:提供了详细的API参考和教程,是学习Itext的重要资料。 - **示例代码**:通过实例代码了解如何使用Itext进行实际操作。 - **社区论坛**:开发者可以在Itext社区提问和交流经验。 6. **安装与集成...
这篇博客"利用iText操作PDF从数据库导出大量数据--汇总(一)"显然讨论了如何利用iText将数据库中的数据高效地导出到PDF文件中,这对于报告生成、数据分析或者报表制作等场景非常有用。 首先,我们需要了解iText的...
《iText 5.3.2:Java PDF处理库的深度探索》 iText是一款广泛应用于Java环境中的开源PDF处理库,其版本5.3.2是该库的一个...通过学习和掌握iText,我们可以极大地提升在PDF领域的开发效率,满足各种复杂的业务需求。
总结,iTextPDF 5.5.5是一个强大的PDF处理工具,无论是在企业级应用还是个人项目中,都能发挥重要作用。通过熟练掌握其API和使用技巧,开发者可以高效地创建专业且富有表现力的PDF文档,满足多样化的业务需求。
在进行此类操作前,建议备份原始库,以便在出现问题时可以回滚。同时,如果可能,最好将修改后的代码封装成一个单独的模块或库,以便其他项目也能复用。 **使用IText生成PDF** 在实际应用中,IText提供了丰富的API...
如果你在使用iText过程中遇到问题,或者想要了解更深入的功能,可以通过留言等方式与其他开发者交流。 **总结** “itext简单demo”是一个使用iText 5.4版本的实践案例,涵盖了文本处理、图像插入、表单创建、加密...
3. 源代码:`itextpdf-5.4.2-sources.jar`提供了iText的源代码,对于深入学习和调试iText非常有帮助。开发者可以通过查看源码理解其内部实现逻辑,解决遇到的问题,甚至根据需求进行定制化开发。 4. 扩展组件:`...
这对于初学者来说,是学习iText的宝贵资源。 六、工具的运用 除了iText本身,开发者还可以结合其他工具,如Apache POI用于读取Excel数据生成报表,或者使用FreeMarker模板引擎动态生成PDF内容。 总结,iText作为一...
`.sources.jar`包含源代码,方便开发者查看和学习iText的内部实现,而`.javadoc.jar`则包含了API文档,便于开发时查阅方法说明和使用示例。 总结起来,iText 5.5.9是一个强大的PDF处理库,适用于Java开发者,它提供...
总结来说,"LibreOffice_iText_Demo.zip"是一个利用LibreOffice和iText进行文档转换和PDF操作的示例。它演示了如何在Spring环境下整合这两个库,实现从Office文档到PDF的转换,以及对PDF文件进行内容插入。对于需要...
**iText 5.4 PDF 工具** iText 是一个强大的开源Java库,用于创建、编辑和处理PDF文档。版本5.4是其历史上的一个重要版本,提供了...通过学习和掌握iText,开发者可以提升工作效率,为项目带来更高质量的PDF解决方案。
总结来说,iTextPDF是Java开发中的PDF处理利器,其丰富的功能和易用性使得处理PDF文档变得简单。通过深入学习和实践,开发者可以充分发挥其潜力,提升工作效率。无论是在企业级应用还是个人项目中,iTextPDF都是一款...
总结一下,iText是一个功能强大的库,可以帮助Java开发者处理文档,包括生成Word文档。处理中文乱码的关键在于正确配置字体和编码,确保使用的jar包支持中文。通过结合示例代码和文档,我们可以掌握使用iText进行...