Javascript 如何使用java在pdf中插入文本字段代替字符串

Javascript 如何使用java在pdf中插入文本字段代替字符串,javascript,java,pdf,itext,digital-signature,Javascript,Java,Pdf,Itext,Digital Signature,我目前正在使用iTextAPI Java将数字签名(DS)插入到pdf文档中。我可以在pdf文档中附加DS,但我的要求是我想在占位符(字符串)的位置插入DS。我尝试了很多方法,但都不管用。有人知道如何实现相同的。。。? 我尝试了另一种方法,将文本字段添加到pdf中,并使用文本字段名在文本字段内附加DS。但问题是我不能在字符串的位置添加文本字段。如何在pdf中的所需位置添加文本字段…?(即我想用文本字段替换字符串)这可能吗…?。有人知道如何在占位符(字符串或文本)位置用java创建新的矩形()。创

我目前正在使用iTextAPI Java将数字签名(DS)插入到pdf文档中。我可以在pdf文档中附加DS,但我的要求是我想在占位符(字符串)的位置插入DS。我尝试了很多方法,但都不管用。有人知道如何实现相同的。。。?
我尝试了另一种方法,将文本字段添加到pdf中,并使用文本字段名在文本字段内附加DS。但问题是我不能在字符串的位置添加文本字段。如何在pdf中的所需位置添加文本字段…?(即我想用文本字段替换字符串)这可能吗…?。有人知道如何在占位符(字符串或文本)位置用java创建新的矩形()。

创建类TextRenderInfoObject,其中字段为

private String text;
private TextRenderInfo line;
添加所有构造函数、getter和setter

获取文本的坐标(占位符)


是否在pdf中添加文本字段?你想做什么?假设我有一个pdf,在pdf的第一页有一个叫做ds的文本。我想用文本字段替换文本,以便在文本字段中插入DS。首先,PDF不是一种书写工具,它是一种文档格式,就像
.doc
etc@MurtazaKhursheedHussain我知道,但有可能吗…?简单回答,不只是格式问题,缺少至少一行的一部分。请查找要插入表单字段的占位符坐标。将其存储为矩形2D.Float格式。可以使用TextRenderInFooObject完成。我无法在此处复制粘贴代码。如何在此编辑器中格式化java代码。“如何在此编辑器中格式化java代码。”-缩进至少4个空格或一个选项卡。我是为您这样做的,但您的初始代码缺少某些内容。@mkl最终格式化了文本。尝试确保它确实有效“它肯定会有效”-这并不总是因为通过
renderText
回调报告的文本块可能比占位符“dstext”长(使签入
renderText
失败),或短(使对
循环的
检查失败),甚至可能只是重叠部分(使上述两项检查都失败)。但对于足够简单的PDF,它可以工作。
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());
} 
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();