我正在编写生成PDF和RTF文档的代码,具体取决于用户的选择。两份文件中的信息是相同的。
到目前为止,我们使用的是Table,Cell,HeaderFooter等类,它们由文档编写者(PdfWriter或RtfWriter2)呈现为正确的形式。
然而,我进一步尝试进行更改(主要是因为升级到iText 2.1使间距有点古怪),我被告知“使用PdfpTable”或“使用pageEvents设置标题”越多”。似乎很多泛型类都被弃用了。
我正在考虑修改代码以分离PDF和RTF的表创建。但是,在需要PDF和RTF文档的实例中,所有iText教程似乎都在使用Table实际推荐。
此外,虽然有一个PdfpTable类,但RTF没有类似的东西,所以我还是会使用Table,这会让我容易受到现在不支持的Table类所带来的所有怪癖的影响。
基本上,将代码分成两个部分的好处/缺点是什么 - 一个用于创建PDF文档,另一个用于以RTF格式创建相同的文档(如果已选择)? SimpleTable在哪里可以实现这一切?它会给我提供我需要的灵活性吗?
谢谢!
答案 0 :(得分:6)
从书中 iText In Action ,第6章结束:
如果查看iText API,您还可以找到其他一些表类。 com.lowagie.text.Table 是原始的表类;它可以追溯到iText早期的日子。它在内部使用类 com.lowagie.text.pdf.PdfTable 将表格呈现为PDF(不要将此类与 PdfPTable 混淆)。
还有更新的 SimpleTable 类,它试图在它们之间形成链接
PdfPTable 和表。如果你将它添加到一个 PdfPTable ,它就可以将自己转换为 PdfPTable
如果您正在生成HTML或RTF,则写入PDF或表的文档。 [...]
Table 类的主要缺点是它不再受支持。不同
人们已经解决了大部分已知问题,但今天不是一个人
了解所有Table方法是否以及如何工作。如果您决定使用此课程,
你自己或多或少,你会遇到很多古怪的布局问题
基于历史设计决策。但是,这并不意味着你无法做到
好好利用 Table 类。
Table类的优点
使用Table类,您可以生成可以呈现的表结构 PDF,RTF和HTML。如果您比较结果,您会发现存在细微差别 在表格的呈现方式。这个是正常的;不是每个表功能都是 支持每种文件格式。
与PdfPTable相反,您可以按随机顺序向表中添加单元格,然后添加 或者如果需要删除列。如果你,甚至可以将表转换为PdfPTable 没有使用setRowspan()。
还有 SimpleTable ,类,它是( PdfP ) - 表的简化版本。将 SimpleTable 添加到PDF文档时,iText会首先尝试添加 该表为 PdfPTable ;如果失败,则将其添加为表。将 SimpleTable 添加到RTF或HTML文档时,它会添加为表。 SimpleTable 不同 从表和 PdfPTable 开始,它重新引入了行的概念。 如果您正在解析具有表行单元结构的XML文件,这可能很方便。 如果与行对应的标记具有属性,则不必定义此属性 行中每个单元格的属性;你可以设置整个属性 一下子。
<强>摘要强>
PdfPTable 应该是您的首选;但是根据为项目定义的要求,可以有充分的理由选择 Table 或 SimpleTable 。