本页内容
填写表单域
使用代码获取 PDF 文档中的表单域并在表单域中填写内容。
由于表单是特殊的注释类型,继承自注释类。所以对注释的接口也同样适用于表单。
使用代码填写表单域的步骤如下:
从 CPDFDocument 中获取想要填写表单的页面对象。
获取页面对象中的所有注释。
遍历所有注释,找到需要填写的表单。
根据需求修改表单填写内容。
以下是填写表单域的示例代码:
java
CPDFDocument document = new CPDFDocument(context);
document.open(pdfPath);
for (int i = 0; i < document.getPageCount(); i++) {
CPDFPage page = document.pageAtIndex(i);
for (CPDFAnnotation annotation : page.getAnnotations()) {
switch (annotation.getType()) {
case WIDGET:
CPDFWidget cpdfWidget = (CPDFWidget) annotation;
switch (cpdfWidget.getWidgetType()) {
case Widget_TextField:
CPDFTextWidget textWidget = (CPDFTextWidget) cpdfWidget;
textWidget.setText("test");
textWidget.updateAp();
break;
case Widget_RadioButton:
CPDFRadiobuttonWidget radiobuttonWidget = (CPDFRadiobuttonWidget) cpdfWidget;
radiobuttonWidget.setChecked(true);
radiobuttonWidget.updateAp();
break;
case Widget_ListBox:
CPDFListboxWidget listBoxWidget = (CPDFListboxWidget) cpdfWidget;
listBoxWidget.setSelectedIndexes(new int[]{0});
listBoxWidget.updateAp();
break;
default:
break;
}
break;
default:
break;
}
}
}
kotlin
val document = new CPDFDocument(context)
document.open(pdfPath)
for (i in 0 until document.pageCount) {
val page = document.pageAtIndex(i)
for (annotation in page.annotations) {
when (annotation.type) {
CPDFAnnotation.Type.WIDGET -> {
val cpdfWidget = annotation as CPDFWidget
when (cpdfWidget.widgetType) {
WidgetType.Widget_TextField -> {
val textWidget = cpdfWidget as CPDFTextWidget
textWidget.text = "test"
textWidget.updateAp()
}
WidgetType.Widget_RadioButton -> {
val radioButtonWidth = cpdfWidget as CPDFRadiobuttonWidget
radioButtonWidth.isChecked = true
radioButtonWidth.updateAp()
}
WidgetType.Widget_ListBox -> {
val listBoxWidget = cpdfWidget as CPDFListboxWidget
listBoxWidget.selectedIndexes = intArrayOf(0)
listBoxWidget.updateAp()
}
else -> {}
}
}
else -> {}
}
}
}