PdfpTable与表(与SimpleTable?)(PdfpTable vs. Table (vs

2019-07-29 15:40发布

我写一个生成PDF和RTF文件,这取决于用户的选择代码。 在这两个文件中的信息是相同的。

到现在为止,我们使用类似于表,细胞,的HeaderFooter,等等,这些都是由documentwriter(无论PdfWriter或RtfWriter2)呈现到正确的形式的类。

然而,进一步的我进入尝试更改(主要是因为在升级到2.1的iText左间距有点古怪),更多的我被告知“使用PdfpTable”,或“使用pageEvents设置头”。 这似乎是一个很大的泛型类的被弃用。

我想改造的代码中分离出表的创作为PDF和RTF的。 然而,所有iText的教程东西似乎使用表在需要PDF和RTF文档的实例,以实际建议

此外,看来虽然是一个PdfpTable类,有没有为RTF相似,所以我会使用表,无论如何,这将让我容易受到各种与现在不支持的表类一起去的怪癖。

基本上,哪些代码分成两个部分的优点/缺点 - 一个用于创建PDF文档,以及一个建立在RTF格式相同的文档,如果被选中? 而哪里SimpleTable进来这一切? 它会给我我需要的灵活性?

谢谢!

Answer 1:

从书的iText在行动 ,第6章的结尾:

如果你看一下iText的API,你还会发现一些其他表类。 com.lowagie.text.Table是原始表类; 它从早期的iText天的日期。 它使用类com.lowagie.text.pdf.PdfTable内部渲染表PDF(不要混淆这一类PdfPTable)。
另外还有新SimpleTable类,它试图形成PdfPTable之间的联系。 如果你将它添加到输出PDF或一个 ,如果你制作HTML或RTF文档它能够将其自身转变为一个PdfPTable。 [...]
类的主要缺点是,它不再受支持。 不同的人有固定的大多数已知的问题,但今天没有一个人明白是否和如何所有表的方法工作。 如果你决定使用这个类,你对你自己或多或少,你会遇到很多基于历史的设计决策古怪的布局问题。 然而,这并不意味着你不能利用好类。

Table类的优点

随着表类,你可以生成的PDF,RTF,HTML和呈现的表结构。 如果比较的结果,你会看到有在表中呈现方式的微小差异。 这个是正常的; 不是每个表功能在每个文档格式的支持。

  1. 您可以使用相同的代码生成PDF,HTML,RTF或表。
  2. 您可以设置边距和间距它在HTML做的方式。
  3. 您可以使用该行跨度,而不必诉诸嵌套表。
  4. 你可以改变你添加细胞即使在列数。
  5. 您可以在特定的位置(行的数量是动态增加)增加细胞。
  6. 您可以将表格文档之前删除列。
  7. 你可以让iText的添加 ,如果它是一个PdfPTable。
  8. 你得到基于对象的PdfPTable对象。

相对于PdfPTable,您可以添加到细胞中的表随机顺序,如果需要添加或删除列。 你甚至可以将表转换为一个PdfPTable如果你没有使用setRowspan()。

另外还有SimpleTable,类,它是(PdfP)的简化版本- 。 当添加一个SimpleTable到PDF文档,iText的第一尝试表中添加为PdfPTable; 如果失败,它的添加为一个 。 当添加一个SimpleTable到RTF或HTML文档,它的添加为SimpleTable不同之处在于它重新引入行的概念的意义上, PdfPTable。 如果你分析,有一个表 - 行 - 细胞结构的XML文件,这可能是得心应手。 如果与行对应的标签具有的属性,你不必定义此属性为单独的行中的每个细胞; 您可以一次设定整行的属性。

摘要

PdfPTable应该是您的第一选择; 但根据您的项目定义的要求,有可能是选择SimpleTable很好的理由。



文章来源: PdfpTable vs. Table (vs. SimpleTable?)
标签: itext