【问题标题】:PdfpTable vs. Table (vs. SimpleTable?)PdfpTable 与 Table(与 SimpleTable?)
【发布时间】:2009-07-03 21:38:52
【问题描述】:

我正在编写生成 PDF 和 RTF 文档的代码,具体取决于用户的选择。两份文件中的信息是相同的。

到目前为止,我们一直在使用 Table、Cell、HeaderFooter 等类,这些类由文档编写器(PdfWriter 或 RtfWriter2)呈现为正确的形式。

但是,我越是尝试进行更改(主要是因为升级到 iText 2.1 使间距有点古怪),我被告知要“使用 PdfpTable”或“使用 pageEvents 设置标题”的次数越多”。似乎很多通用类都被弃用了。

我正在考虑修改代码以分离出 PDF 和 RTF 的表格创建。但是,所有 iText 教程内容似乎实际上推荐在需要 PDF 和 RTF 文档的情况下使用 Table。

此外,似乎虽然有 PdfpTable 类,但 RTF 没有类似的东西,所以无论如何我都会使用 Table,这会使我容易受到现在不受支持的 Table 类带来的所有怪癖的影响。

基本上,将代码分成两部分的好处/缺点是什么——一部分用于创建 PDF 文档,另一部分用于创建 RTF 格式的相同文档(如果已选择)?而 SimpleTable 在这一切中发挥了怎样的作用?它会给我所需的灵活性吗?

谢谢!

【问题讨论】:

    标签: itext


    【解决方案1】:

    来自iText In Action一书,第 6 章结束:

    如果您查看 iText API,您还会发现其他一些表格类。 com.lowagie.text.Table 是原来的表格类;它可以追溯到早期的 iText 时代。它在内部使用类 com.lowagie.text.pdf.PdfTable 将表格呈现为 PDF(不要将此类与 PdfPTable 混淆)。
    还有较新的 SimpleTable 类,它试图在 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 添加 Table,就好像它是一个 PdfPTable
    8. 你会得到一个基于 Table 对象的 PdfPTable 对象。

    与 PdfPTable 不同,您可以按随机顺序将单元格添加到表中,然后添加 或根据需要删除列。你甚至可以将表格翻译成 PdfPTable,如果你 没有使用 setRowspan()。

    还有 SimpleTable 类,它是 (PdfP)-Table 的简化版本。将 SimpleTable 添加到 PDF 文档时,iText 首先尝试添加 作为 PdfPTable 的表格;如果失败,则将其添加为 Table。将 SimpleTable 添加到 RTF 或 HTML 文档时,它被添加为 TableSimpleTable 不同 来自 TablePdfPTable,因为它重新引入了行的概念。 如果您正在解析具有表格行单元结构的 XML 文件,这会很方便。 如果与行对应的标签有属性,则不必定义 行中每个单元格的属性分别;您可以设置整个属性 一次排。

    总结

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

    【讨论】:

      猜你喜欢
      • 2010-12-25
      • 1970-01-01
      • 2017-01-16
      • 2021-07-22
      • 2018-06-09
      • 1970-01-01
      • 2020-12-13
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多