iText Android - 向现有 PDF 添加文本

iText Android - Adding text to existing PDF

我们有一个包含一些字段的 PDF,以便收集一些数据,我必须通过在这些位置添加一些文本,在 Android 上用 iText 以编程方式填充它。我一直在考虑实现这一目标的不同方法,但每一种都收效甚微。

注意:我使用 Android 版本的 iText (iTextG 5.5.4) 和 Samsung Galaxy Note 10.1 2014 (Android 4.4) 进行大部分测试。

我想知道执行此过程的最佳性能方式是什么,以及有关实现它的任何帮助。我真的是 iText 的新手,非常感谢任何帮助。

谢谢!

编辑

最后我使用了第三个选项:一个包含我们填充的可编辑字段的 PDF,然后我们使用 "flattening" 创建一个包含所有文本的不可编辑的 PDF。

代码如下:

    pdfReader = new PdfReader(is);

    FileOutputStream fios = new FileOutputStream(outPdf);

    PdfStamper pdfStamper = new PdfStamper(pdfReader, fios);
    //Filling the PDF (It's totally necessary that the PDF has Form fields)
    fillPDF(pdfStamper);
    //Setting the PDF to uneditable format
    pdfStamper.setFormFlattening(true);

    pdfStamper.close();

及填表方法:

public static void fillPDF(PdfStamper stamper) throws IOException, DocumentException{
    //Getting the Form fields from the PDF
    AcroFields form = stamper.getAcroFields();
    Set<String> fields = form.getFields().keySet();
    for(String field : fields){
            form.setField("name", "Ernesto");
            form.setField("surname", "Lage");
        }
    }
}

这种方法的唯一问题是您需要知道每个字段的名称才能填写它。

iText 中有一个称为 'flattening' 的进程,它获取表单字段并将其替换为字段包含的文本。

我已经有几年没用过 iText 了(在 Android 上根本没用过),但是如果你搜索 'flattening' 的手册或在线示例,你应该会找到如何做它。