Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓填写PDF表格_Android_Pdf_Pdf Generation - Fatal编程技术网

Android 安卓填写PDF表格

Android 安卓填写PDF表格,android,pdf,pdf-generation,Android,Pdf,Pdf Generation,我有.pdf文件和多个表格。 我想打开我的.pdf文件,填写表格并从Android开发中保存它 是否有Android渲染的API。 我找到了iText,但我只是设法创建了新的pdf,然后我就可以填写表格了。表示将填写我创建的.pdf文件。我需要用我自己的.pdf文件填写我的表格 提前感谢…任何帮助都将不胜感激。允许您这样做。您可以获取现有的PDF文档,填写表单字段值,然后输出新填写的PDF 最近在dynamicpdf.com上有一篇博文,内容是在Android应用程序中为Java设置dynami

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

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

提前感谢…任何帮助都将不胜感激。

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

最近在dynamicpdf.com上有一篇博文,内容是在Android应用程序中为Java设置dynamicpdf,并从中创建一个简单的PDF

您可以更轻松地进一步使用该示例,并使用它来完成填表任务。以下(未测试)代码是使用DynamicPDF Mergement 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支持不公开任何用于填写表单的控件。第三方PDF SDK(如PSPDFKit)填补了这一空白,并允许:

List 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规范,XFA规范已经包含在PDF 2.0规范中

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();
    }
}