Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将现有(平面)pdf修改为表单?_Java_Forms_Pdf_Itext - Fatal编程技术网

如何在Java中将现有(平面)pdf修改为表单?

如何在Java中将现有(平面)pdf修改为表单?,java,forms,pdf,itext,Java,Forms,Pdf,Itext,让我首先说,我看到了这方面的一些问题,但实际上没有具体回答我的问题 假设我有一个其他人收到的PDF的模板版本。这是一个经典的PDF,看起来像一个表单,但只有一个部分是可编辑的,其他部分不是,因为它们是用导入的excel工作表中的数据填充的。(遗憾的是,我无法举例说明) 我在iText 7中做了很多工作,但我一辈子都不知道是否可以将平面文本字段更改为可编辑的表单字段,如图1所示 图2显示了我想使其也可编辑的复选框,但我只能在java中更改它们的值,即使这样,它也只显示一个十字,而不是一个复选标记(

让我首先说,我看到了这方面的一些问题,但实际上没有具体回答我的问题

假设我有一个其他人收到的PDF的模板版本。这是一个经典的PDF,看起来像一个表单,但只有一个部分是可编辑的,其他部分不是,因为它们是用导入的excel工作表中的数据填充的。(遗憾的是,我无法举例说明)

我在iText 7中做了很多工作,但我一辈子都不知道是否可以将平面文本字段更改为可编辑的表单字段,如图1所示

图2显示了我想使其也可编辑的复选框,但我只能在java中更改它们的值,即使这样,它也只显示一个十字,而不是一个复选标记(即使我更改了复选类型)

这有点难以解释,但tl:dr是,我只想知道我是否可以用java编辑现有的平面PDF,或者是否必须在adobe中编辑


谢谢

如果它确实是一个扁平的表单,那么填充的文本现在是常规页面内容,就像标签和其他装饰一样。填充可能包含在XObject中,但可能不是。要说它们是否仍然可以以某种方式识别为以前的字段值,更不用说如何识别了,我们需要分析实际的文件。另一方面,您对图像2的评论听起来好像表单没有扁平化,至少没有出现问题的复选框。也许我只是误用了这个术语。我仍然可以循环遍历所有表单字段,获取它们的字段名,并用Java调整它们,但不再是PDF本身。至于复选框,它们的值仅在Java中可调整-状态为“Oui”或“Non”,但无论我输入的值是什么,PDF都会在框中显示一个叉号(除非当我突出显示复选框时,叉号后面会出现一个复选标记)。这有点烦人,因为它基本上是其他人的文件。这听起来不像是扁平的,只是设置为只读。但在这种情况下,内容操纵在itext中应该是微不足道的。我来看看。也许是不相关的,但是在一个扁平的PDF中,是否有可能使字段再次交互?除了在Adobe中实际编辑之外?