13

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

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

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

4

2 回答 2

4

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");
于 2012-08-01T16:25:14.003 回答
1

当前 Android 平台(包括 Android P)上的原生 PDF 支持不公开任何用于填写表单的控件。诸如 PSPDFKit 之类的第 3 方 PDF SDK 填补了这一空白,并允许以编程方式填写 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 表单填写示例。)

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

于 2018-05-23T21:14:55.320 回答