我有.pdf文件,并且有多种表格。我想打开我的 .pdf 文件,填写表格并将其从 Android 开发中保存。
是否有任何用于 Android 渲染的 API。我找到了 iText,但我只是设法创建新的 pdf,然后我可以填写表格。表示我创建的将填写哪个 .pdf 文件。我需要用自己的 .pdf 格式填写表格。
在此先感谢...任何帮助将不胜感激...
我有.pdf文件,并且有多种表格。我想打开我的 .pdf 文件,填写表格并将其从 Android 开发中保存。
是否有任何用于 Android 渲染的 API。我找到了 iText,但我只是设法创建新的 pdf,然后我可以填写表格。表示我创建的将填写哪个 .pdf 文件。我需要用自己的 .pdf 格式填写表格。
在此先感谢...任何帮助将不胜感激...
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");
当前 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 规范中已被弃用。