如何使用Pdfium库创建FPDF_FORMFIELD系列表单域?
使用Pdfium创建各类表单域的方法
在Pdfium中,Widget注释是表单域的可视化载体,要创建具体类型的表单域,需要将Widget注释与对应的表单域对象关联,核心流程及示例如下:
核心步骤
- 创建
FPDF_ANNOT_SUBTYPE_WIDGET类型的注释作为可视化载体; - 调用
FPDFForm_CreateField创建指定类型的表单域对象; - 用
FPDFAnnot_SetFormField将注释与表单域绑定; - 根据域类型设置对应属性。
具体实现示例
1. 创建文本框(FPDF_FORMFIELD_TEXTFIELD)
// 假设已获取文档句柄doc和页面句柄page FPDF_ANNOTATION text_widget = FPDFPage_CreateAnnot(page, FPDF_ANNOT_SUBTYPE_WIDGET, 50, 700, 250, 750); FPDF_FORMFIELD text_field = FPDFForm_CreateField(doc, FPDF_FORMFIELD_TEXTFIELD, "user_name"); // 关联注释与表单域 FPDFAnnot_SetFormField(text_widget, text_field); // 设置文本框属性 FPDFFormField_SetText(text_field, "请输入姓名"); // 设置默认提示文本 FPDF_SetFormFieldHighlightColor(text_field, 255, 255, 200); // 设置高亮背景色
2. 创建复选框(FPDF_FORMFIELD_CHECKBOX)
FPDF_ANNOTATION checkbox_widget = FPDFPage_CreateAnnot(page, FPDF_ANNOT_SUBTYPE_WIDGET, 50, 600, 80, 630); FPDF_FORMFIELD checkbox_field = FPDFForm_CreateField(doc, FPDF_FORMFIELD_CHECKBOX, "agree_terms"); FPDFAnnot_SetFormField(checkbox_widget, checkbox_field); // 设置复选框初始状态为选中 FPDFFormField_SetCheckState(checkbox_field, FPDF_FORMFIELD_CHECKED);
3. 创建单选按钮(FPDF_FORMFIELD_RADIOBUTTON)
单选按钮需设置相同域名归为同一组,同一组内仅能选中一个选项:
// 第一个单选按钮(默认选中) FPDF_ANNOTATION radio1_widget = FPDFPage_CreateAnnot(page, FPDF_ANNOT_SUBTYPE_WIDGET, 50, 500, 80, 530); FPDF_FORMFIELD radio1_field = FPDFForm_CreateField(doc, FPDF_FORMFIELD_RADIOBUTTON, "gender"); FPDFAnnot_SetFormField(radio1_widget, radio1_field); FPDFFormField_SetRadioButtonValue(radio1_field, "male"); FPDFFormField_SetCheckState(radio1_field, FPDF_FORMFIELD_CHECKED); // 第二个单选按钮 FPDF_ANNOTATION radio2_widget = FPDFPage_CreateAnnot(page, FPDF_ANNOT_SUBTYPE_WIDGET, 100, 500, 130, 530); FPDF_FORMFIELD radio2_field = FPDFForm_CreateField(doc, FPDF_FORMFIELD_RADIOBUTTON, "gender"); FPDFAnnot_SetFormField(radio2_widget, radio2_field); FPDFFormField_SetRadioButtonValue(radio2_field, "female");
关键注意事项
- 表单域的域名(
FPDFForm_CreateField第三个参数)用于标识域,单选按钮同组必须使用相同域名; - 不同类型的表单域对应不同的属性设置API,比如文本框用
FPDFFormField_SetText,单选按钮用FPDFFormField_SetRadioButtonValue; - 完成所有设置后,需调用
FPDF_SaveAsCopy或FPDF_SaveWithVersion保存文档,确保表单域生效。
内容的提问来源于stack exchange,提问作者OM PRAKASH SEERVI
相关产品推荐
相关产品推荐

