python - 写入页面时不显示更新的 pdf 字段
问题描述
我使用Python
包更新了 pdf 字段pdfrw
并创建了一个新的 pdf。但是当我用 Adobe Reader 打开它时,更新的字段没有显示出来。但是,这些字段可以通过手动单击来显示。
我试过代码
pdf.Root.AcroForm.update(pdfrw.PdfDict(NeedAppearances=pdfrw.PdfObject('true'))).
它确实添加了一个属性NeedAppearances
,但它并没有解决问题。
我的代码
def write_fillable_pdf(input_pdf_path, output_pdf_path, data_dict):
try:
pdf = pdfrw.PdfReader(input_pdf_path)
for page in pdf.pages:
annotations = page['/Annots']
if annotations != None:
for annotation in annotations:
if annotation['/Subtype'] == '/Widget':
if annotation['/T']:
key = annotation['/T'][1:-1]
if key in data_dict.keys():
annotation.update(
pdfrw.PdfDict(V='{}'.format(data_dict[key])))
pdf.Root.AcroForm.update(pdfrw.PdfDict(NeedAppearances=pdfrw.PdfObject('true')))
print (pdf.Root.AcroForm)
output_pdf = output_pdf_path
pdfrw.PdfWriter().write(output_pdf, pdf)
except ValueError:
pass
我希望显示这些字段。
解决方案
您可以使用annotation.update(pdfrw.PdfDict(AP=data_dict[key],V=data_dict[key]))
,如果添加Ff=1
,则以只读模式创建 PDF,这意味着您无法编辑它。
推荐阅读
- firefox - AWS 实例中的 Firefox
- powershell - 如何使用纠缠框架编写发送邮件消息的测试用例
- gitlab - GitLab CI/CD 不添加 .env 文件
- django - Django:切换登录用户
- python - 获取阶跃函数执行结果
- jquery - 如何使自定义 Owl Carousel 点可点击?
- reactjs - Twilio + React:如何在通话期间更改音频或视频输入设备?
- loops - 通过 Datastage 上的触发器启动序列
- azure - 如何使用 Azure DevOps Rest API 创建多个文件夹
- reactjs - React 组件在商店更新之前得到渲染