Код: Выделить всё
from pypdf import PdfReader, PdfWriter
reader = PdfReader("form.pdf")
writer = PdfWriter()
page = reader.pages[0]
fields = reader.get_fields()
# Line directly below is the one that was added by accident
writer.append_pages_from_reader(reader)
writer.append(reader)
writer.update_page_form_field_values(
writer.pages[0],
{"fieldname": "some filled in text"},
auto_regenerate=False)
with open("filled-out.pdf", "wb") as output_stream:
writer.write(output_stream)
Другая проблема заключается в том, что есть несколько раскрывающихся полей. Документация pypdf не содержит примеров кода для этого довольно распространенного сценария. Я рассматривал следующий вопрос: значение поля изменения PyPDF2 без словаря, где автор отвечает на свой вопрос. Решение состоит в том, чтобы отредактировать раскрывающийся объект как обычный текст obj.update({NameObject('/FT'): NameObject('/Tx')}). Каким будет мой объект? Я не хочу превращать все раскрывающиеся списки в текст, а только те, что на первой странице (объекты 4 и 5). Я попробовал код ниже, следуя этому сообщению: Изменить поля в pdf с помощью pypdf? , ошибок нет, но и изменений нет.
Код: Выделить всё
import pypdf
from pypdf import generic as pypdf_generic
field_object = page.get('/Annots').get_object()[5].get_object()
field_object.update({pypdf_generic.NameObject('/FT'): pypdf_generic.NameObject('/Tx')})
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-pythons