Javascript 如何使用java在pdf中插入文本字段代替字符串
我目前正在使用iTextAPI Java将数字签名(DS)插入到pdf文档中。我可以在pdf文档中附加DS,但我的要求是我想在占位符(字符串)的位置插入DS。我尝试了很多方法,但都不管用。有人知道如何实现相同的。。。?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创建新的矩形()。创
我尝试了另一种方法,将文本字段添加到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();