我有一个项目,我需要填写预制的 PDF,我想到的最合乎逻辑的解决方案是将预制的 PDF 制作成 PDF 表单,以便输入值应该放在标签中,然后我可以查看 PDF 中的表单标签,并将它们与值字典对齐。
我已经使用PyPDF2完成了这项工作。总的来说,我拍了一张网络表单的图像,然后打开 Acrobat 并根据图像中看到的字段创建了一个 PDF 表单,然后使用PyPDF2来填写 PDF 表单字段,但需要注意的是打印那些填写的值似乎在某些浏览器中存在问题,Firefox 就是其中之一。
我如何将我的 PDF 表单转换为标准/平面 PDF 以便我可以保留预先填充的值,但会丢失可编辑的字段(因为我认为这是问题所在)?
from io import BytesIO
import PyPDF2
from django.http import HttpResponse
from PyPDF2.generic import BooleanObject, NameObject, IndirectObject
def pdf_view(request):
template = 'templates/template.pdf'
outfile = "templates/test.pdf"
input_stream = open(template, "rb")
pdf_reader = PyPDF2.PdfFileReader(input_stream, strict=False)
if "/AcroForm" in pdf_reader.trailer["/Root"]:
pdf_reader.trailer["/Root"]["/AcroForm"].update(
{NameObject("/NeedAppearances"): BooleanObject(True)})
pdf_writer = PyPDF2.PdfFileWriter()
set_need_appearances_writer(pdf_writer)
if "/AcroForm" in pdf_writer._root_object:
# Acro form is form field, …Run Code Online (Sandbox Code Playgroud)