作为在代码中从头开始生成整个 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