如何动态地在迭代文件PdfPTable中添加一行?

时间:2017-08-22 02:17:02

标签: java itext

我必须使用包含按钮的itext创建一个pdf,点击时应该在现有的PdfPTable中添加一行。我写了一些代码来创建PushbuttonField。在尝试设置操作时,我只能找到PdfAction.javaScript。我无法弄清楚如何在表中添加行。我尝试在线搜索,但我能找到的只有PdfAction.javaScript

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

创建PDF文件时,可以在画布上绘制文本,线条和形状。这也是您向PdfPTable添加Document时发生的情况。如果查看PDF页面的语法,您将无法识别表格。您将找到文本(单元格的内容),线条(边框)和形状(背景),但您找不到表格。如果表格分布在不同的页面上,那么"表格#34;在一页上不知道它与"表"在另一页上。

当然,您可以通过引入标记内容和创建结构树来为文档添加语义结构,但我们称之为Tagged PDF的机制可以&#39 ;用于制作PDF"可编辑的"与Word文档可编辑的方式相同。标记PDF(以及其他)用于允许辅助技术向视障者呈现内容(例如,在PDF / UA的背景下)。结构的存在并没有改变所有文本,所有行和所有形状都添加在绝对位置的事实。

这与HTML在页面呈现时计算<table><tr><th><td>页面上的位置非常不同。在HTML中,当您调整浏览器窗口大小时,此位置甚至可以更改。

PDF中没有这样的东西(除非你使用XFA(*),这是一种自ISO 32000-2以来不推荐使用的技术)。页面上的所有内容都有固定的位置,硬编码到页面的内容流中。更改PDF查看器窗口的大小不会改变页面内容的位置。

由于所有这一切,您的问题无效。无法在PDF中创建向表中添加行的按钮,因为:

  1. 在很多情况下没有表格:绝对位置只有一堆文字,线条和形状,
  2. 即使存在表格的概念(使用标记PDF):该表格的可视化表示在创建时处固定,但在消费时无法更改时间
  3. 您希望使用普通的 PDF查看器,就像它是 PDF编辑器一样。由于上面列出的所有原因,这是不可能的。

    (*)XFA因不同原因而被弃用。其中一个最重要的原因是缺乏对XFA的支持。没有很多观众支持XFA。如果您要发布一个后续问题,询问*&#34;我如何创建XFA文档?&#34;,答案是:&#34;不要这样做!&# 34; 创建XFA非常复杂,一旦您成功创建了XFA表单,您就会发现许多客户都无法使用该文件,因为他们的查看者不支持该格式。