如何通过PyMuPDF为PDF下拉框设置显示值与导出值?
PyMuPDF设置PDF下拉框(ComboBox)的显示值与导出值问题
在Adobe JavaScript中,我们可以通过f.setItems( ["Ohio", "OH"], ["Oregon", "OR"], ["Arizona", "AZ"] );同时为下拉框定义显示文本和对应的导出值,但在PyMuPDF里,仅设置widget.choice_values = ["Ohio", "Oregon", "Arizona"]只能添加显示选项,无法关联导出值,甚至尝试其他写法会导致Jupyter Notebook内核崩溃。
解决方法
PyMuPDF其实支持设置导出值,只需配合使用widget.export_values属性,它和choice_values是两个平行列表,索引位置一一对应即可:
import fitz # 打开目标PDF doc = fitz.open("your_form.pdf") # 获取第一页的表单控件 page = doc[0] widgets = page.widgets() # 定位到目标ComboBox控件 combo_box = None for w in widgets: if w.field_type == fitz.PDF_WIDGET_TYPE_COMBOBOX: combo_box = w break # 设置显示值和对应的导出值 combo_box.choice_values = ["Ohio", "Oregon", "Arizona"] combo_box.export_values = ["OH", "OR", "AZ"] # 保存修改后的PDF doc.save("updated_form.pdf") doc.close()
注意事项
choice_values和export_values的列表长度必须完全一致,每个位置的元素对应一个下拉选项的显示文本和导出值。- 之前内核崩溃大概率是因为错误的赋值方式(比如直接传入类似JS的嵌套列表格式),PyMuPDF不支持这种写法,分开设置两个平行列表即可避免问题。
内容的提问来源于stack exchange,提问作者Camilo
相关产品推荐
相关产品推荐

