如何使用 java 在 pdf 中的字符串位置插入文本字段

how to insert text field in the place of string in pdf using java

我目前正在使用 IText API Java 将数字签名 (DS) 插入到 pdf 文档中。我可以在 pdf 文档中附加 DS,但我的要求是我想在占位符(字符串)的位置插入 DS。我尝试了很多方法,但没有任何效果。有谁知道如何实现相同的......? 我尝试了另一种方法,通过将文本字段添加到 pdf 并使用文本字段名称在文本字段中附加 DS。但同样的问题是我无法在 String 的位置添加文本字段。如何在 pdf 中的所需位置添加文本字段...?(即我想用文本字段替换字符串)这可能吗...?有人知道如何在 [= 中创建新的 Rectangle() 14=] 在占位符(字符串或文本)的位置。

创建class TextRenderInfoObject,字段为

private String text;
private TextRenderInfo line;

添加所有构造函数、getter 和 setter。

获取文本坐标(占位符)

PdfReader reader = new PdfReader(byteArrayOutputStream.toByteArray());  
List<TextRenderInfoObject> textRenderInfos = new ArrayList<>();  
PdfReaderContentParser parser = new PdfReaderContentParser(reader);  
parser.processContent(pageNumber, new TextMarginFinder()
{
    @Override  
    public void renderText(TextRenderInfo renderInfo)
    {  
        if("dstext".contains(renderInfo.getText()))
        {  
            textRenderInfos.add(new TextRenderInfoObject(  
            renderInfo.getText(), renderInfo));
        }
    }
}

Rectangle2D.Float line;  
for (TextRenderInfoObject textRenderInfo : textRenderInfos)  
{
    if (textRenderInfo.getText().equals("dstext"))  
        line = textRenderInfo.getLine().getBaseline().getBoundingRectange());
} 

在 pdf 中创建表单字段

PdfReader pdfReader = new PdfReader(byteArrayOutputStream.toByteArray());
PdfStamper stamper = new PdfStamper(pdfReader, byteArrayOutputStream);  
PdfFormField field = PdfFormField.createSignature(stamper.getWriter()); 
field.setFieldName("Digital Signature");
field.setWidget(new Rectangle(line.x, line.y, line.x + line.width, line.y - line.height), PdfAnnotation.HIGHLIGHT_OUTLINE);
field.setFlags(PdfAnnotation.FLAGS_PRINT);  
field.setColor(BaseColor.WHITE);  
field.setMKBorderColor(BaseColor.BLACK);  
stamper.addAnnotation(field, pageNumber);  
stamper.close();