我正在编写可生成PDF和RTF文档的代码,具体取决于用户的选择。两个文档中的信息相同。
到目前为止,我们一直使用Table,Cell,HeaderFooter等类,这些类由文档编写器(PdfWriter或RtfWriter2)呈现为正确的形式。
但是,我越想尝试进行更改(主要是因为对iText 2.1的升级使间距有些古怪),被告知“使用PdfpTable”或“使用pageEvents设置标题”的信息就更多。似乎许多通用类已被弃用。
我正在考虑修改代码以分离出PDF和RTF的表创建。但是,所有iText教程 Material 似乎实际上建议在需要PDF和RTF文档的情况下使用Table。
此外,似乎有一个PdfpTable类,但RTF没有类似之处,因此无论如何我都将使用Table,这将使我容易受到现在不受支持的Table类所带来的所有怪癖的影响。
基本上,将代码分为两部分的好处/缺点是-一次创建PDF文档,另一次以RTF格式创建相同的文档(如果已选择)?那么,SimpleTable会出现在哪里?它会给我所需的灵活性吗?
谢谢!
最佳答案
摘自《 iText In Action》第六章的结尾:
如果您查看iText API,还会发现其他一些表类。 com.lowagie.text.Table是原始表类;它可以追溯到iText早期。它在内部使用com.lowagie.text.pdf.PdfTable类将表格呈现为PDF(请勿将此类与PdfPTable混淆)。
还有一个新的SimpleTable类,它试图在两个
PdfPTable和表。如果将其添加到PdfPTable中,则可以将其自身翻译为PdfPTable
如果您要生成HTML或RTF,则该文档会写PDF或写入表格。 [...]
Table类的主要缺点是不再受支持。不同
人们已经解决了大多数已知问题,但是今天没有一个人
了解所有表格方法是否以及如何工作。如果您决定使用此类,
您或多或少地会自己,并且会遇到很多古怪的布局问题
基于历史设计决策。但是,这并不意味着您无法
善用Table类。
表类的优点
使用Table类,您可以生成一个可以在
PDF,RTF和HTML。如果比较结果,就会发现差异很小
以表格呈现方式。这个是正常的;并非每个表格功能都是
支持每种文档格式。
动态地)。
与PdfPTable相反,您可以按随机顺序将单元格添加到表中,然后添加
或根据需要删除列。您甚至可以将表格转换为PdfPTable
没有使用setRowspan()。
还有SimpleTable类,它是(PdfP)-Table的简化版本。将SimpleTable添加到PDF文档时,iText首先尝试添加
该表作为PdfPTable;如果失败,则将其添加为表格。将SimpleTable添加到RTF或HTML文档时,它会作为表格添加。 SimpleTable不同
从Table和PdfPTable的角度来看,它重新引入了行的概念。
如果您要解析具有表格行单元格结构的XML文件,这会很方便。
如果与行相对应的标签具有属性,则无需定义此属性
该行中每个单元格的属性;您可以设置整个属性
马上排。
摘要
PdfPTable应该是您的首选;但是根据为项目定义的要求,有充分的理由选择Table或SimpleTable。