翻译|使用教程|编辑:李显亮|2020-07-21 11:35:13.203|阅读 310 次
概述:在当今这样的时代,使用表格收集了大量数据,可填充的PDF表格在这种情况下值得一提。在本文中,我们将探索如何使用Java以编程方式填充,创建或编辑可填充PDF表单。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
在当今这样的时代,使用表格收集了大量数据,可填充的PDF表格在这种情况下值得一提。它们是收集和整理信息的有效方法。此外,可填充的PDF表单现在已被不同机构用作标准。例如,某些法院或采购公司可以有效地使用可填写的PDF表格来标准化其程序。对于创建此类应用程序,Aspose.PDF for Java API是最合适的API。
在本文中,我们将探索如何使用Java以编程方式填充,创建或编辑可填充PDF表单。
目前,Java版Aspose.PDF升级到v20.6版,支持将PDF转换为CSV,修复HOCR数据的异常,感兴趣的朋友可点击下方按钮下载最新版。
可以按照以下步骤在Java应用程序中创建可填写的PDF表单:
下面的代码段显示了如何使用Java从头创建可填充的PDF表单:
com.aspose.pdf.Document pdfdoc = new com.aspose.pdf.Document();
com.aspose.pdf.Page page = pdfdoc.getPages().add();
TextBoxField nameBox = new TextBoxField(pdfdoc, new com.aspose.pdf.Rectangle(275, 740, 440, 770));
nameBox.setPartialName("nameBox1");
nameBox.getDefaultAppearance().setFontSize(10);
nameBox.setMultiline(true);
com.aspose.pdf.Border nameBorder = new com.aspose.pdf.Border(nameBox);
nameBorder.setWidth(1);
nameBox.setBorder(nameBorder);
nameBox.getCharacteristics().setBorder(java.awt.Color.BLACK);
nameBox.setColor(com.aspose.pdf.Color.fromRgb(Color.RED));
TextBoxField mrnBox = new TextBoxField(pdfdoc, new com.aspose.pdf.Rectangle(275, 718, 440, 738));
mrnBox.setPartialName("Box1");
mrnBox.getDefaultAppearance().setFontSize(10);
com.aspose.pdf.Border mrnBorder = new com.aspose.pdf.Border(mrnBox);
mrnBorder.setWidth(1);
mrnBox.setBorder(mrnBorder);
mrnBox.getCharacteristics().setBorder(java.awt.Color.BLACK);
mrnBox.setColor(com.aspose.pdf.Color.fromRgb(Color.RED));
// Add form fields to first page of PDF document
pdfdoc.getForm().add(nameBox, 1);
pdfdoc.getForm().add(mrnBox, 1);
//Add Radiobuttons at specific position coordinates in PDF
com.aspose.pdf.Table table = new com.aspose.pdf.Table();
//Set position here
table.setLeft(200);
table.setTop(300);
table.setColumnWidths("120");
page.getParagraphs().add(table);
com.aspose.pdf.Row r1 = table.getRows().add();
com.aspose.pdf.Row r2 = table.getRows().add();
com.aspose.pdf.Cell c1 = r1.getCells().add();
com.aspose.pdf.Cell c2 = r2.getCells().add();
com.aspose.pdf.RadioButtonField rf = new com.aspose.pdf.RadioButtonField(page);
rf.setPartialName("radio");
pdfdoc.getForm().add(rf, 1);
com.aspose.pdf.RadioButtonOptionField opt1 = new com.aspose.pdf.RadioButtonOptionField();
com.aspose.pdf.RadioButtonOptionField opt2 = new com.aspose.pdf.RadioButtonOptionField();
opt1.setOptionName("Yes");
opt2.setOptionName("No");
opt1.setWidth(15);
opt1.setHeight(15);
opt2.setWidth(15);
opt2.setHeight(15);
rf.add(opt1);
rf.add(opt2);
opt1.setBorder(new com.aspose.pdf.Border(opt1));
opt1.getBorder().setWidth(1);
opt1.getBorder().setStyle(com.aspose.pdf.BorderStyle.Solid);
opt1.getCharacteristics().setBorder(java.awt.Color.BLACK);
opt1.getDefaultAppearance().setTextColor(java.awt.Color.RED);
opt1.setCaption(new com.aspose.pdf.TextFragment("Yes"));
opt2.setBorder(new com.aspose.pdf.Border(opt1));
opt2.getBorder().setWidth(1);
opt2.getBorder().setStyle(com.aspose.pdf.BorderStyle.Solid);
opt2.getCharacteristics().setBorder(java.awt.Color.BLACK);
opt2.getDefaultAppearance().setTextColor(java.awt.Color.RED);
opt2.setCaption(new com.aspose.pdf.TextFragment("No"));
c1.getParagraphs().add(opt1);
c2.getParagraphs().add(opt2);
pdfdoc.save(dataDir + "Fillable_PDF_Form.pdf");
我们已经学会了从头开始创建一个新的可填充PDF文件。让我们进入处理现有PDF文档的方案:
①使用Java在现有PDF文件中填写表单字段
就像在上面的示例中创建PDF表单一样,接下来继续处理相同的文档并使用Java以编程方式填充表单字段。可以按照以下步骤填写创建的表单:
下面的代码段显示了如何使用Java填写可填写的表单:
// Open document
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fillable_PDF_Form.pdf");
// Get the fields
TextBoxField textBoxField1 = (TextBoxField) pdfDocument.getForm().get("nameBox1");
TextBoxField textBoxField2 = (TextBoxField) pdfDocument.getForm().get("Box1");
// Fill form fields' values
textBoxField1.setValue("A quick brown fox jumped over a lazy dog.");
textBoxField2.setValue("A quick brown fox jumped over a lazy dog.");
// Get radio button field
RadioButtonField radioField = (RadioButtonField) pdfDocument.getForm().get("radio");
// Specify the index of radio button from group
radioField.setSelected(1);
dataDir = dataDir + "Fill_PDF_Form_Field.pdf";
// Save updated document
pdfDocument.save(dataDir);
②使用Java修改PDF文档中的表单字段
有时我们需要编辑或更新PDF表单中的字段值。可以按照以下步骤轻松编辑可填写的PDF表单:
下面的代码段显示了如何使用Java更新或编辑可填充PDF文件:
// Open document
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// Get a field
TextBoxField textBoxField = (TextBoxField) pdfDocument.getForm().get("nameBox1");
// Modify field value
textBoxField.setValue("Changed Value");
textBoxField.setReadOnly(true);
dataDir = dataDir + "ModifyFormField.pdf";
// Save updated document
pdfDocument.save(dataDir);
③使用Java删除现有PDF文件中的表单字段
可以在Java应用程序中轻松地删除或删除表单字段。您可以按照以下步骤操作:
下面的代码片段显示了如何使用Java从PDF表单中删除表单字段:
// Open document
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// Delete a particular field by name
pdfDocument.getForm().delete("nameBox1");
dataDir = dataDir + "Delete_Form_Field.pdf";
// Save modified document
pdfDocument.save(dataDir);
我们可能会注意到某些PDF表单具有扩展权限。它们用于避免原始内容的修改,并且仅允许填写表格。PDF文件的扩展权限可能在以下情况下受到影响。
填写这样的表格并将其保存在磁盘的不同位置。因此,我们需要通过以下步骤逐步保存此类文件:
下面的代码段显示了如何使用Java填写PDF表单时保留扩展权限:
// Instantiate Document instance
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// Get values from all fields
for (com.aspose.pdf.Field formField : pdfDocument.getForm().getFields())
{
// If the fullname of field contains nameBox1, perform the operation
if (formField.getFullName().contains("nameBox1"))
{
// Cast form field as TextBox
TextBoxField textBoxField = (TextBoxField) formField;
// Modify field value
textBoxField.setValue("Preserve Extended Features");
}
}
// Save the updated document
pdfDocument.save();
可以使用Java和Aspose.PDF for Java使用Java填写可填写的PDF表单字段。遵循以下步骤:
以下代码段显示了如何在可填写的PDF表单中使用JavaScript:
com.aspose.pdf.Document pdfdoc = new com.aspose.pdf.Document();
pdfdoc.getPages().add();
TextBoxField textBoxField = new TextBoxField(pdfdoc.getPages().get_Item(1), new com.aspose.pdf.Rectangle(85, 750, 215, 770));
textBoxField.setPartialName("textbox1");
textBoxField.setValue("Text Box");
//TextBoxField.Border = new Border();
com.aspose.pdf.Border border = new com.aspose.pdf.Border(textBoxField);
border.setWidth(2);
border.setDash(new com.aspose.pdf.Dash(1, 1));
textBoxField.setBorder(border);
textBoxField.getDefaultAppearance().setFontSize(10);
textBoxField.setColor(com.aspose.pdf.Color.fromRgb(java.awt.Color.GREEN));
// Add field to the document
pdfdoc.getForm().add(textBoxField, 1);
String JS = "var w = this.getField('" + textBoxField.getPartialName() + "'); var today = new Date(); w.value = today.toLocaleString();";
pdfdoc.setOpenAction(new com.aspose.pdf.JavascriptAction(JS));
pdfdoc.save(dataDir + "JS_Form.pdf");
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn