我花了一些时间来弄清楚如何使用iText将可填充字段插入到PdfPTable中。通过阅读本书和谷歌搜索,我知道应该通过直接内容添加字段,并且因为我需要在我正在构建的表中向特定单元格添加字段,所以我应该使用单元格事件来执行此操作。
为了提高我的理解,我希望有人可以确认我们这样做的原因是因为PdfPCellEvent为我们提供了一个矩形,它为我们提供了表格单元格的确切位置?
道歉,如果这看起来非常明显 - 我的Java知识是通过解决特定需求而不是以结构化方式学习来建立的,因此可能缺少一些非常基本的概念。
答案 0 :(得分:1)
PdfPTable / PdfPCell将行和文本绘制到PDF的内容流中。
字段不是内容流的一部分。字段是一个抽象概念,可以通过窗口小部件注释在页面上显示。注释不是内容流的一部分。它们存储在从页面字典中引用的PDF字典中(而不是存在于页面的内容流中)。这些词典包含注释的坐标。
这就是你应该使用单元格事件向表中添加字段的原因。将表格添加到页面时,iText会创建内容流。在渲染完成之前,iText不知道每一行和文本片段的坐标。那就是触发表格和单元格事件的时候。您可以使用传递给事件的坐标来创建注释。