`
cai21cn
  • 浏览: 75349 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

iText复杂表格的模板处理

阅读更多
iText虽然能处理表格,但对于复杂的表格有点力不从心。网上能找到的一些表格代码,仅仅能作为演示用途。如果表格比较复杂,对于表格单元的控制、排列,需要大量的代码来实现,这完全是对编码的折磨,而且调起来也极为不便。所以,对于复杂的表格,完全可以变通一种方式来实现,可以采用模板的方式来实现,让复杂的表格绘制变成字处理活,就像操作Word表单模板来生成Word文档一样,其过程如下:
1、采用office 2007制作PDF文件,其他PDF工具也可以。用word的表格文本处理能力来制作表格,应该都不会有什么问题,应该让代码来完成最灵巧的工作,注意留够表单域的空间。制作好的表格文件输出成为PDF文件.
2、使用Acrobat打开制作好的表格PDF文件,制作表单域。注意域名要唯一,同时,注意域的字体、格式、排列等相关属性。
3、使用iText的PDFreader来读取模板PDF文件,使用setField(fieldname,value)来填充PDF上的表格域,将完成后的PDF文件输出保存即得到完美的PDF表格文件。

对于PDF表格文本域,如果是多行文本域,在用Acrobat制作表单时,需要将域拉伸到将来文本可能填充的区域,iText不会自动扩充扩大。同时,如果你要垂直向顶排列,则可以试着在模板中输入一些文本然后删除,来训练PDF将文本按垂直向顶排(注意字体大小),因为PDF默认的垂直居中排列,而且编码时找不到多行文本域中控制文本垂直排列代码(时间紧,如哪位大侠知道请告知)。
PDF模板的字体尽量使用标准字体,最好不用Acrobat的专有字体。
在iText制作中文表格中,使用iTextAsian.jar包,加入import com.lowagie.text.pdf.fonts.*,否则可能报字体错误或PDF文件不正常。调试时注意服务器的JVM可能缓存,不能即时应用java的变更代码。

分享到:
评论
4 楼 johngreen 2013-09-22  
利用itext操作pdf模板表单域,生成的pdf文件因为嵌入字体而过大。一个pdf文件为20K,但是添加了表单域之后就是200多K了,有没有好的方法让其变小?
3 楼 duanyiyuan 2012-03-14  
果然是大神啊,救了我的命啊!!!
2 楼 java_base 2010-11-15  
补充: 用java做,只要告诉我这样的区域如何定义就可以了 谢谢了~
1 楼 java_base 2010-11-15  
您好,如何创建一个模板,可以定义几个区域,区域里可加入图片,文本,表格等,还望不吝赐教。 有点急,谢谢了~!

相关推荐

Global site tag (gtag.js) - Google Analytics