gpt4 book ai didi

java - 使用iText获取pdf文件中字符串的位置(xy坐标)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:45 25 4
gpt4 key购买 nike

给定一个 PDF 模板,其中包含在何处插入不同信息的符号,我的任务是检测这些符号并用动态数据替换它们从 html 表单收到。例如,模板可以如下所示:

|FNAME||SNAME|

|TELCAP||PHONE1|
|CELLCAP||MOBILE|
|EMAIL|
|WEB|

我必须用通过表单收到的名称替换 |FNEME|

  1. 有没有办法获取位置,例如 |FNAME|,使用 iText 函数 所以我知道在哪里插入名字?

  2. 另外,拿到位置后,有没有办法删除|FNAME| 并将其替换为从动态接收的名称我的 html 表单?

最佳答案

我不知道如何使用 iText 获取 PDF 中“字符串”的位置,但我知道如何使用 iText 获取 PDF 中表单域的位置。表单(如果您不知道该术语)是一个 PDF 文档,其中包含已命名的字段,如果表单在可能的环境中显示,最终用户可能会填写这些字段。

您创建一个 PdfWriter 和 PdfReader,获取表单模板,然后是 iText 称为“AcroFields”的集合:

Document document = new Document(PageSize.LETTER, 18, 18, 18, 18);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(<<fileoutputpath>>);
DirectContent content = write.getDirectContent();
PdfReader reader = new PdfReader("<pdf form file specification>");
PdfImportedPage template = writer.getImportedPage(reader, 1); // gets first page
AcroFields acroFields = reader.getAcroFields();

表单的创建者会给每个可填写的字段一个字段名;你可以得到具有该名称的该字段所覆盖的矩形的位置和大小:

float[] positions = acroFields.getFieldPositions("<fieldName>");

然后将您的值写入该位置以代替字段名称:

ColumnText columnText = new ColumnText(contentByte);
columnText.setSimpleColumn(new Phrase(value, fontToUse), pos1, pos2, pos3, pos4, Element.ALIGN_LEFT, false);
columnText.go(false);

我知道这很复杂,不幸的是仍然不完整,但在我/我们甚至知道使用表格是您的一种选择之前,我不愿意完整地解释它。 iText 库会执行此操作,但据我所知,没有简单的方法来执行此操作。

关于java - 使用iText获取pdf文件中字符串的位置(xy坐标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com