因此,我尝试使用pdfrw标记PDF文件中的复选框。这意味着将复选框“ AS”的值从默认的“ / Off”更改为“ / Yes”。 pdfrw当前在写入文件时会在我的“ /是”周围加上括号,因此它不起作用。如何避免添加这些括号?
我的代码:
template_pdf = pdfrw.PdfReader(input_pdf_path)
annotations = template_pdf.pages[0][/Annots]
for annotation in annotations:
annotation.update(pdfrw.PdfDict(AS="/Yes"))
pdfrw.PdfWriter().write(output_pdf_path, template_pdf)
我的PDF文件中的复选框最终如下所示,第三行中的第一个单词很重要:
1661 0 obj
<</AP <</D <</Off 1845 0 R /Yes 1846 0 R>> /N <</Yes 1847 0 R>>>> /AS
(/Yes) /F 4 /FT /Btn /MK <</CA (l)>> /P 1608 0 R /Rect
[101.275 576.22 107.395 584.91] /Subtype /Widget /T (box1) /Type
/Annot>>
endobj
但是要使复选标记实际上出现在大多数PDF查看器中,它需要像这样:
1661 0 obj
<</AP <</D <</Off 1845 0 R /Yes 1846 0 R>> /N <</Yes 1847 0 R>>>> /AS
/Yes /F 4 /FT /Btn /MK <</CA (l)>> /P 1608 0 R /Rect
[101.275 576.22 107.395 584.91] /Subtype /Widget /T (box1) /Type
/Annot>>
endobj
我总是可以在python中打开文件,并仅用“ / Yes”替换“(/ Yes)”的所有实例,但是必须有某种方法可以通过pdfrw获得正确的值。
答案 0 :(得分:2)
我认为您可能需要使用PdfName('Yes')
而不是"/Yes"
:
annotation.update(pdfrw.PdfDict(AS=pdfrw.PdfName('Yes')))
未经测试。
答案 1 :(得分:0)
annotation.update(pdfrw.PdfDict(V=pdfrw.PdfName('On')))
以上为我工作。
答案 2 :(得分:0)
template.Root.Pages.Kids[0].Annots[0].update(PdfDict(AS=PdfName('On'), V=PdfName('On')))