捣鼓了一个月的iText,算是有了一点点心得,与众位分享之~
1. 关于表格的行高:
这个问题搜索了很多贴子都没有答案。后来终于得以解决。可以在表格的cell里,在该cell文字后添加茫茫多的/n,然后使用cell.setMaxLines方法,来设定该cell最多能有多少行,从而间接达到设置该cell行数为固定行数的问题。但该方法只局限于高版本的iText版本,对于像1.1这种低版本不适用。
2. 关于中文字体:
在iText5.X版本以后好像失去了对中文字体的支持。目前的iText对中文提供支持的最高版本是2.1.7。iTextAsia.jar包中,对中文的支持只有宋体,但我们可以使用系统字体来达到输出多种字体的目的。如:
BaseFont kaitiBF = BaseFont.createFont(fontUrl+"STKAITI.TTF,Bold", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font noteFont = new Font(kaitiBF,14,Font.NORMAL);
这样就创建了一个14号的楷体Font对象。其中,createFont方法中的第一个参数表示系统字体所在的路径。一般的XP系统中,都是在C:/Windows/Fonts里。
3. 关于字体的下划线:
有两种方式实现下划线:
(1)Font f = new Font(kaitiBF,12,Font.UNDERLINE);
(2)chunk.setUnderline(0.2f, -2f);
两种实现方式产生的效果不一样,貌似第二种的下划线比较细。而且在第二种中,通过调整参数可以设置下划线的位置,甚至可以让下划线穿过文字,如chunk1.setUnderline(0.5f, 3f);
4. 关于iText版本
在使用iText的过程中,最最烦心的是各个iText版本差异性很大。在使用1.1版本之后,发现2.X版本的一些方法实用,于是想到迁移到2.X上去,却发现将1.1改成2.1以后,字体都发生了变化,于是还得去重新设置字体。因为我的PDF上的对象比较少,我相信字体问题只是版本问题的一小部分。因此奉劝正在用iText进行研究开发的初手,避免本人的此类麻烦。
另外,插入背景图片的问题至今还在摸索之中,还望高手予以赐教!