I have a pregenerated PDF with some form fields that I use PyPdf2 to fill. All fields are marked with readonly flag form_fields = {"my_field": "Hello, World"} pdf_content = open('my_file.pdf', 'rb').read() reader_buffer = io.BytesIO(pdf_content) reader = PdfReader(reader_buffer, strict=False) writer = PdfWriter() writer.clone_reader_document_root(reader) for page in reader.pages: writer.add_page(page) writer.set_need_appearances_writer() writer.update_page_form_field_values(page, form_fields) This part works writing to a file shows the fields. Later I use reportlab to draw and for some reason some of the fields keep disappearning and I know its because set_need_appearances_writer everytime so the final pdf misses it. I want to flatten the PDF fields after they are filled. I want to know if there is a way to convert field object to plain text? Continue reading...