首页 文章

Android 填写 PDF 表单

提问于
浏览
9

我有**.pdf**文件,有多种形式。我想打开我的.pdf 文件,填写表格并从 Android 开发中保存。

是否有适用于 Android 渲染的 API。我找到了 iText,但我只是设法创建新的 pdf,而不是填写表格。表示我创建的.pdf 文件将被填写。我需要在自己的.pdf 中填写表格。

感谢 Advance...any 帮助将不胜感激...

2 回答

  • 4

    DynamicPDF 合并 Java允许你这样做。您可以获取现有 PDF 文档,填写表单字段值,然后输出新填充的 PDF。

    关于在 Android 应用程序中设置 DynamicPDF for Java 并从中创建一个简单的 PDF,最近有一篇关于 dynamicpdf.com 的博客文章。

    您可以轻松地将该示例更进一步,并使用它来完成表单填充的任务。以下(未经测试的)代码是使用 DynamicPDF Merger for Java 在 Android 设备上填充现有 PDF 所需的示例:

    InputStream inputStream = this.getAssets().open("PDFToFill.pdf");
    long avail = inputStream.available();
    byte[] samplePDF = new byte[(int) avail];
    inputStream.read(samplePDF , 0, (int) avail);
    inputStream.close();
    PdfDocument objPDF = new PdfDocument(samplePDF);    
    
    MergeDocument document = new MergeDocument(objPDF);
    document.getForm().getFields().getFormField("FormField1").setValue("My Text");
    document.draw("[PhysicalPath]/FilledPDF.pdf");
    
  • 0

    当前 Android 平台(包括 Android P)上的原生 PDF 支持不会公开任何填充表单的控件。 3rd-party PDF SDK(如 PSPDFKit)填补此空白并允许程序化 PDF 表格填写

    List<FormField> formFields = document.getFormProvider().getFormFields();
    for (FormField formField : formFields) {
        if (formField.getType() == FormType.TEXT) {
            TextFormElement textFormElement = (TextFormElement) formField.getFormElement();
            textFormElement.setText("Test " + textFormElement.getName());
        } else if (formField.getType() == FormType.CHECKBOX) {
            CheckBoxFormElement checkBoxFormElement = (CheckBoxFormElement)formField.getFormElement();
            checkBoxFormElement.toggleSelection();
        }
    }
    

    (如果你点击上面的链接,还有一个 Kotlin PDF 表格填写 example.)

    请注意,市场上的大多数 SDK 都专注于 PDF AcroForms,而不是 PDF 2.0 规范中弃用的 XFA 规范。

相关问题