从用户输入生成PDF表单(Python)
我是一名大学生,兼职工作,虽然我有一些Python的经验。最近我想给我的老板留下好印象,打算做一个表单生成器。我的工作是在一个卡丁车场,我们需要人们填写一些安全信息,所以我的目标是制作一个图形界面(GUI)或者网页,让我们只需输入他们的名字和其他信息,就能生成一份包含所有信息的表单,最后他们只需签名就可以了。
我查了一下,发现有很多工具,但我不确定这些工具是否完全符合我的需求,看起来都挺复杂的。
我之前做过一个简单的图形界面,但我更希望能在一个.html页面上完成这个工作。
有没有人能给我一些建议,告诉我该怎么做呢?
谢谢!
另外,我知道这个地方主要是讨论代码的,如果我这样发帖不太合适,我在此表示歉意。
2 个回答
作为一种替代方案,你可以不必从头开始用代码生成整个PDF(比如之前提到的使用reportlab,这个方法也很不错,reportlab是一个很好的库),而是可以填充一个已经存在的PDF表单,这个表单可以通过一些编辑软件生成(比如Word或者类似的软件,我自己用的是Scribus NG,不过那个学习起来很麻烦,不太推荐给普通用户)。
填充现有表单的好处是,你可以使用专业的编辑工具来制作表单,这样可以更容易地创建看起来更专业的表单(而且这些表单还可以由平面设计师进行编辑)。缺点是,这个过程稍微复杂一点,而且不是纯粹用Python来解决的。
你需要通过创建一个fdf文件来填充表单,然后从Python中调用一个叫做pdftk的外部工具。写这个fdf文件的过程就留给你自己去做吧!fdf文件基本上就是一个键值对的列表,键是表单字段的ID(也就是表单中文本框的ID),值就是要写入那个字段的内容。
如果你想用这种方式,我建议你先手动写好fdf文件,然后手动运行pdftk,确保它能正常工作,然后再用Python来自动化这个过程。这不是一个完美的解决方案,但结果看起来确实不错。
下面是我用来调用pdftk的代码,这会对你正确输入命令行语法有所帮助。
def pdftk(pdf_in, fdf_in, pdf_out):
"""
Run pdftk to fill in pdf_out from the pdf form template and data given.
(only tested on linux)
"""
cmd_line = [pdftk_executable,
pdf_in,
"fill_form",
fdf_in,
"output",
pdf_out,
"verbose"]
# print " ".join(cmd_line)
try:
pdftk_output = subprocess.check_output(cmd_line)
except subprocess.CalledProcessError as e:
pdftk_output = e.output
pdftk_error = True
return