gpt4 book ai didi

Python PDF 表单扁平化

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:03 27 4
gpt4 key购买 nike

如何“拼合”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()

最佳答案

根据 Adob​​e 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
})

关于Python PDF 表单扁平化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54997657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com