【问题标题】:Android fill PDF formAndroid填写PDF表格
【发布时间】:2012-07-28 23:59:26
【问题描述】:

我有 .pdf 文件和多个表格。 我想打开我的 .pdf 文件,填写表格并将其从 Android 开发中保存。

是否有任何用于 Android 渲染的 API。 我找到了 iText,但我只是设法创建新的 pdf,然后我可以填写表格。表示我创建的将填写哪个 .pdf 文件。我需要用自己的 .pdf 格式填写表格。

在此先感谢...任何帮助将不胜感激...

【问题讨论】:

    标签: android pdf pdf-generation


    【解决方案1】:

    当前 Android 平台(包括 Android P)上的原生 PDF 支持不公开任何用于填写表单的控件。 PSPDFKit 等 3rd-party PDF SDK 填补了这一空白并允许programmatic PDF form filling

    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 表单填写示例。)

    请注意,市场上的大多数 SDK 都专注于 PDF AcroForms,而不是 XFA 规范,后者在 PDF 2.0 规范中是 deprecated

    【讨论】:

      【解决方案2】:

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

      dynamicpdf.com 上最近有一篇关于在 Android 应用程序中设置 DynamicPDF for Java 并从中创建简单 PDF 的博文,http://www.dynamicpdf.com/Blog/post/2012/06/15/Generating-PDFs-Dynamically-on-Android.aspx

      您可以轻松地将该示例更进一步,并使用它来完成您的表单填写任务。以下(未经测试)代码是使用 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");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-05
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        相关资源
        最近更新 更多