PDF使用Java itext以编程方式编写

时间:2017-05-04 08:15:22

标签: itext

任务:我正在尝试使用java编辑PDF表单编程方式。

问题:目前我正在使用i文本库,我无法获取要在PDF中编写的文本的位置(x和y坐标)。

我已经尝试过:实现了RenderListner但TextRenderInfo.getText()给了我半个字或字符。

我想要的是什么:我希望将文字格式化为PDF文档格式的正确文字。

我需要使用itext java进行PDF文本编辑的示例。

先谢谢。

1 个答案:

答案 0 :(得分:0)

你在寻找什么并不容易(我甚至不愿意说不可能)。 根据规范,pdf文档只需要包含在查看器中呈现文档所需的指令。 其中一个症状(你在TextRenderInfo中看到的)是没有真正的结构概念。

例如,段落“Lorem Ipsum Dolor Sit Amet”可能会呈现为:
渲染“Ipsum Do”
渲染“Lorem”(包括空格) 渲染“lor” 渲染“Sit Amet”(领先的空间不包括在内,但通过改变位置来实现)

TextRenderInfo完全正如名称所示,您将获得有关每个文本呈现指令的信息。标准本身使得无法提供诸如“它将始终包含完整的单词/短语”或“指令以逻辑阅读顺序出现”的保证。

如果要执行此操作以获取某些文本的位置,只需收集所有TextRenderInfo对象,然后使用自定义比较器进行排序,并将其位置考虑在内。排序后,您可以循环遍历它们,这样您就可以获得有关正在渲染的文本和正在渲染文本的坐标的信息。查看SimpleTextExtractionStrategy以了解我们如何执行此操作。

如果要将自定义值注入pdf(您提到编辑),请考虑使用表单(XFA或acro)。表单允许您基本上定义iText以后可以填充内容的占位符。某些表单元素将允许动态调整大小。

如果您在将数据转换为pdf之前可以访问数据,那么在那时操作数据当然会更好。由于编辑pdf(以编程方式)本质上是一个难以解决的问题。