PdfpTable与表(对比SimpleTable?)

时间:2009-07-03 21:38:53

标签: itext

我正在编写生成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在哪里可以实现这一切?它会给我提供我需要的灵活性吗?

谢谢!

1 个答案:

答案 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。如果您比较结果,您会发现存在细微差别 在表格的呈现方式。这个是正常的;不是每个表功能都是 支持每种文件格式。

  1. 您可以使用相同的代码生成PDF,HTML或RTF表格。
  2. 您可以设置填充和间隔在HTML中完成的方式。
  3. 您可以使用行跨度而无需求助于嵌套表。
  4. 即使添加了单元格,也可以更改列数。
  5. 您可以在特定位置添加单元格(行数会增加 动态地)。
  6. 您可以在将表格添加到文档之前删除列。
  7. 您可以让iText添加,就像它是 PdfPTable 一样。
  8. 您将根据 Table 对象获得 PdfPTable 对象。
  9. 与PdfPTable相反,您可以按随机顺序向表中添加单元格,然后添加 或者如果需要删除列。如果你,甚至可以将表转换为PdfPTable 没有使用setRowspan()。

    还有 SimpleTable ,类,它是( PdfP ) - 的简化版本。将 SimpleTable 添加到PDF文档时,iText会首先尝试添加 该表为 PdfPTable ;如果失败,则将其添加为。将 SimpleTable 添加到RTF或HTML文档时,它会添加为 SimpleTable 不同 从 PdfPTable 开始,它重新引入了行的概念。 如果您正在解析具有表行单元结构的XML文件,这可能很方便。 如果与行对应的标记具有属性,则不必定义此属性 行中每个单元格的属性;你可以设置整个属性 一下子。

    <强>摘要

    PdfPTable 应该是您的首选;但是根据为项目定义的要求,可以有充分的理由选择 Table SimpleTable