1

我正在使用itext 7.1.8,我需要将具有相同名称的字段添加到 pdf。我使用如下代码:

public class Main {
    public static void main(String[] args) {
        final PdfDocument emptyPdfDocument = createEmptyPdfDocument(pdf);

        addTextField("Text_1", "Hello", emptyPdfDocument.getFirstPage(), PdfAcroForm.getAcroForm(emptyPdfDocument, true), emptyPdfDocument);
        addTextField("Text_1", "Hello", emptyPdfDocument.addNewPage(), PdfAcroForm.getAcroForm(emptyPdfDocument, true), emptyPdfDocument);
        savePdf(emptyPdfDocument);
    }

    private static void addTextField(String name, String value, PdfPage page, PdfAcroForm form, PdfDocument pdf) {
        PdfFormField field = form.getField(name);
        final Rectangle rect = new Rectangle(100, page.getCropBox().getHeight() - 100, 300, 20);
        if (field != null) {
            PdfWidgetAnnotation annotation = new PdfWidgetAnnotation(rect);
            annotation.makeIndirect(pdf);
            annotation.setVisibility(VISIBLE);
            field.addKid(annotation);
            page.addAnnotation(annotation);
            return;
        }

        field = PdfFormField.createText(pdf, rect, name);
        field.setValue(value);
        field.setVisibility(VISIBLE);
        page.addAnnotation(field.getWidgets().get(0));
        form.addField(field, page);
    }

    private static PdfDocument createEmptyPdfDocument(final String pdfPath) throws IOException {
        PdfWriter pdfWriter = new PdfWriter(new FileOutputStream(pdfPath));
        final PdfDocument pdfDocument = new PdfDocument(pdfWriter);
        pdfDocument.addNewPage();
        return pdfDocument;
    }

    public static void savePdf(PdfDocument pdf) {
        pdf.close();
    }
}

但是当addTextField第二次调用该方法时,该领域的孩子们是空的。

我不明白我做错了什么。

4

0 回答 0