2009-07-03 105 views
2

我正在编写生成PDF和RTF文档的代码,具体取决于用户的选择。这两份文件中的信息都是一样的。到目前为止,我们使用Table,Cell,HeaderFooter等类,这些类被documentwriter(PdfWriter或RtfWriter2)渲染成正确的形式。PdfpTable与表(与SimpleTable?)

但是,我进一步尝试进行更改(主要是因为升级到iText 2.1使间隔有点古怪),我被告知“使用PdfpTable”的次数越多,或“使用pageEvents设置头”。看起来好像很多泛型类都被弃用了。

我正在考虑修改代码以分离PDF和RTF的表格创建。然而,所有的iText教程的东西似乎实际上推荐使用表格在需要PDF和RTF文件的情况下。

此外,看起来虽然有一个PdfpTable类,但没有类似的RTF,所以我会使用Table,这会让我容易受到现在不支持的Table类出现的所有怪癖。

基本上,将代码分成两个部分有什么好处/缺点 - 一个用于创建PDF文档,另一个用RTF格式创建相同的文档(如果选择了该文档)? SimpleTable在哪里进入到这一切?它会给我我需要的灵活性吗?

谢谢!

回答

6

从书的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相反,您可以按随机顺序向表中添加单元格,并添加 或删除列(如果需要)。如果你的 没有使用setRowspan(),你甚至可以把Table转换为PDFPDF。

另外还有SimpleTable,类,它是(PdfP)的简化版本 - 。当向PDF文档添加SimpleTable时,iText首先尝试将 表添加为PdfPTable;如果失败,则将其添加为。在向RTF或HTML文档添加SimpleTable时,它将作为添加。 SimpleTable不同 表PdfPTable从意义上讲它重新引入了行的概念。 如果您正在解析具有表格 - 行 - 单元格结构的XML文件,这可能非常方便。 如果与行对应的标签具有属性,则不必为行中的每个单元单独定义此 属性;您可以一次为整个行设置属性。

摘要

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