Как вставить текстовое поле вместо строки в PDF, используя Java - PullRequest
0 голосов
/ 08 октября 2018

В настоящее время я работаю над вставкой цифровой подписи (DS) в документы PDF с использованием IText API Java.Я могу прикрепить DS в pdf документах, но мое требование - я хочу вставить DS в месте заполнителя (строка).Я пробовал много способов, но ничего не работает.Кто-нибудь знает, как реализовать то же самое ...?Я попробовал другой способ сделать то же самое, добавив текстовое поле в pdf и прикрепив DS внутри текстового поля, используя имя текстового поля.Но опять же проблема в том, что я не могу добавить текстовое поле вместо String.Как добавить текстовое поле в pdf в требуемом месте ...? (Т.е. я хочу заменить строку текстовым полем) это возможно ...?. Кто-нибудь знает, как новый Rectangle () может быть создан в Java врасположение заполнителя (строка или текст).

1 Ответ

0 голосов
/ 24 октября 2018

Создать класс TextRenderInfoObject с полями как

private String text;
private TextRenderInfo line;

, добавить все конструкторы, геттеры и сеттеры.

Чтобы получить координаты текста (заполнитель)

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();
...