Флажок pdfrw значения AS получают нежелательные скобки

Поэтому я пытаюсь пометить флажки в файле PDF с pdfrw. Это означает изменение значения флажка "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.

1 ответ

Я думаю, что вам может понадобиться PdfName('Yes') вместо "/Yes":

annotation.update(pdfrw.PdfDict(AS=pdfrw.PdfName('Yes')))

Непроверенные.

template.Root.Pages.Kids[0].Annots[0].update(PdfDict(AS=PdfName('On'), V=PdfName('On')))
annotation.update(pdfrw.PdfDict(V=pdfrw.PdfName('On')))

Выше у меня работало.

Другие вопросы по тегам