如何将相同名称的字段添加到pdf

时间:2020-10-13 15:53:13

标签: java itext itext7

我正在使用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时,字段的孩子为空。

我不明白我在做什么错。

0 个答案:

没有答案