如何“展平” PDF表单?我有一个PDF表格,需要填写。我有一个简单的示例,其中TEMP_FORM.pdf是源,data_dict是要在TEMP_FORM.pdf中填充的值。输出文件另存为FORM1.pdf,但仍可编辑,我需要将该文件展平,以使值无法编辑。
from PyPDF2 import PdfFileReader, PdfFileWriter
TEMPLATE_PATH = 'TEMP_FORM.pdf'
OUTPUT_PATH = 'FORM1.pdf'
data_dict = {
'name': 'XYZ',
'address': 'PQR',
'email': 'xyz@gmail.com',
'send_date': '2018-02-13',
'due_date': '2018-03-13'
}
if __name__ == '__main__':
input_file = PdfFileReader(open(TEMPLATE_PATH, "rb"))
output_file = PdfFileWriter()
output_file.addPage(input_file.getPage(0))
output_file.updatePageFormFieldValues(output_file.getPage(0), data_dict)
output_stream = open(OUTPUT_PATH, "wb")
output_file.write(output_stream)
output_stream.close()
答案 0 :(得分:0)
对于Adobe Docs,您可以将“可编辑表单”字段的位位置更改为1,以将其设置为“只读”。我在这里提供了完整的解决方案,但它使用的是Django:
https://stackoverflow.com/a/55301804/8382028
Adobe Docs(第552页):
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_archives/PDFReference.pdf
使用PyPDF2填充字段,然后遍历注释并执行以下操作:
for j in range(0, len(output_file['/Annots'])):
writer_annot = output_file['/Annots'][j].getObject()
for field in data_dict:
if writer_annot.get('/T') == field:
writer_annot.update({
NameObject("/Ff"): NumberObject(1) # make ReadOnly
})