ItextSharp - Acrofields are empty

前端 未结 3 658
你的背包
你的背包 2021-01-14 13:14

I have a PDF form with filled out fields. If I try to read the acrofields they are empty. But in the PDF I can change the values and save them.

private stat         


        
3条回答
  •  执念已碎
    2021-01-14 13:49

    Clearly your PDF is broken. The fields are defined as widget annotations on the page level, but they aren't referenced in the /AcroForm fields set on the document root level.

    You can fix your PDF using the FixBrokenForm code sample:

    PdfReader reader = new PdfReader(src);
    PdfDictionary root = reader.getCatalog();
    PdfDictionary form = root.getAsDict(PdfName.ACROFORM);
    PdfArray fields = form.getAsArray(PdfName.FIELDS);
    
    PdfDictionary page;
    PdfArray annots;
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        page = reader.getPageN(i);
        annots = page.getAsArray(PdfName.ANNOTS);
        for (int j = 0; j < annots.size(); j++) {
            fields.add(annots.getAsIndirectObject(j));
        }
    }
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.close();
    reader.close();
    

    You should inform the creators of the tool that was used to produce the form that their PDFs aren't compliant with the PDF reference.

提交回复
热议问题