【问题标题】:Create a pdf with fillable fields python创建一个带有可填写字段python的pdf
【发布时间】:2017-06-02 08:01:17
【问题描述】:
因此,我的任务是创建一个 pdf,允许最终用户将信息输入 pdf 并打印或保存,或者。我正在尝试创建的 pdf 是从具有可填写字段的 pdf 模板呈现的。我遇到的问题是,每次我使用任何 python 库(pypdf2、pdfrw、reportlabs 等)创建此 pdf 时,它都会将其展平,并且在导出后字段不再可填写。有什么东西可以实现这个目标吗?如果我必须获取平面模板文件并在其上渲染一个 html 表单,这对我来说并不重要,只要它可以工作。 pdf 是在 acrobat 中制作的,我确保删除了密码。
有问题的 pdf 是在 acrobat pro 中创建的。我的python版本是2.7。
如果以前有人这样做过,那么这些信息将非常有帮助。谢谢!
【问题讨论】:
标签:
python
pdf
pdf-generation
【解决方案1】:
面临同样的问题。刚刚发现,output.pdf中的表格在okular或firefox中无法填写,但在google-chrome或chromium-browser中打开时仍然可以填写。
我使用了以下几行:
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
c = canvas.Canvas('watermark.pdf')
c.drawImage('testplot.png', 350, 550, width=150, height=150)
c.save()
output_file = PdfFileWriter()
watermark = PdfFileReader(open("watermark.pdf", 'rb'))
input_file = PdfFileReader(file('template.pdf', 'rb'))
page_count = input_file.getNumPages()
for page_number in range(page_count):
print "Plotting png to {} of {}".format(page_number, page_count)
input_page = input_file.getPage(page_number)
input_page.mergePage(watermark.getPage(0))
output_file.addPage(input_page)
with open('output.pdf', 'wb') as outputStream:
output_file.write(outputStream)