在Java中使用iText替换占位符

在Java中使用iText替换占位符,java,pdf,itext,Java,Pdf,Itext,我有一个包含占位符的PDF,比如,我希望能够在PDF中读取并使用iText将PDF占位符值更改为文本 因此,请阅读PDF,使用replaceString()方法并更改占位符,然后生成新的PDF 这可能吗 谢谢。PDF中占位符的使用非常非常有限。从理论上讲,这是可以做到的,在某些情况下,按照你说的去做是可行的,但因为PDF对结构不太了解,所以很难做到: 简单地提取单词是很困难的,因此在很多情况下识别PDF中的占位符已经很困难了 替换PDF中的文本是一场噩梦,因为PDF文件通常没有单词、行和段落的

我有一个包含占位符的PDF,比如,我希望能够在PDF中读取并使用iText将PDF占位符值更改为文本

因此,请阅读PDF,使用replaceString()方法并更改占位符,然后生成新的PDF

这可能吗


谢谢。

PDF中占位符的使用非常非常有限。从理论上讲,这是可以做到的,在某些情况下,按照你说的去做是可行的,但因为PDF对结构不太了解,所以很难做到:

  • 简单地提取单词是很困难的,因此在很多情况下识别PDF中的占位符已经很困难了

  • 替换PDF中的文本是一场噩梦,因为PDF文件通常没有单词、行和段落的概念。因此,例如,没有很好的文本回流

就像我说的,理论上它可以在特殊条件下工作,但这不是一个很好的解决方案

更好的方法取决于您的用例:

1) 对于某些表单,可以将完整表单作为背景图像或PDF文件,然后生成文本作为该背景的覆盖(可以说是填空),正如Bruno和mlk在评论中指出的那样,在这种情况下,您还可以使用可以动态填充的表单字段


2) 对于其他表单,最好将模板设置为结构化格式,如XML或HTML,以该格式替换文本,然后将其转换为PDF。

PDF作为一种格式,不适合使用类似的占位符。如果要在PDF中使用占位符,则需要使用表单字段。这在我的书的第6章中有解释:我已经看过这一章了。我似乎找不到我需要做的事情的任何用途,来替换文本/字符串?阅读介绍,你会注意到你要求的是一些没有完成的事情。这就解释了为什么你找不到答案;在1)的情况下,使用AcroForm表单字段可能是合适的。