【问题标题】:Generating PDF Forms from Raw User Input (Python)从原始用户输入生成 PDF 表单 (Python)
【发布时间】:2018-07-22 06:27:18
【问题描述】:

所以我是一名兼职工作的大学生 - 但我确实有一些 Python 经验。无论如何,我想我会尝试通过制作表单生成器来打动我的老板。我的工作是在一个卡丁车的地方,我们需要人们填写一堆安全信息,所以我的目标是将其作为计算机上的 GUI 或网页,我们只需在其中写下他们的姓名和其他详细信息即可会生成一份包含他们所有信息的表格,他们只需要签名即可。

我环顾四周,发现有很多工具,但我不确定它们是否正是我想要的 - 看起来都很复杂。

我之前制作了一个简单的 GUI,但理想情况下我只是让他们在 .html 页面上完成。

谁能给我一些关于如何去做的建议?

谢谢!

附言。我知道这个地方主要是为了代码,所以如果我发布这种风格的帖子违反了礼仪,我深表歉意。

【问题讨论】:

    标签: python forms pdf document generator


    【解决方案1】:

    您可以使用reportlab,这里是tutorial。 并且可以使用easy_install进行安装

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 2011-08-15
        • 2010-10-08
        • 1970-01-01
        • 2014-03-29
        • 2017-02-23
        • 2013-05-09
        • 2013-11-02
        相关资源
        最近更新 更多