安卓如何填写PDF表格

13

我有一个.pdf文件,其中有多个表格。 我想要在Android开发中打开我的.pdf文件,填写表格并保存它。

是否有适用于Android渲染的API呢? 我找到了iText,但我只能创建新的pdf文件,然后填写表单。这意味着我只能填写我创建的.pdf文件。我需要填写自己的.pdf表格。

提前致谢...任何帮助将不胜感激...

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");

1
当前Android平台(包括Android P)的原生PDF支持不提供任何填写表单的控件。第三方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表格填充示例。)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接