【问题标题】:How to Check Boxes in a PDF with fdfgen in Python如何在 Python 中使用 fdfgen 选中 PDF 中的复选框
【发布时间】:2016-07-08 12:20:07
【问题描述】:

我正在开发一个使用 fdfgen 和 pdftk 填写 pdf 的 Python 3.4 项目。我可以很容易地填写文本字段。我不知道如何检查一个框。

这是我的 python 脚本的一部分:

        fields = generate_vs300_field_list(answers_dict) # Returns list of tuples of fields and text to be added to pdf
        fdf = forge_fdf("", fields, [], [], [])
        logging.debug('Called forge_fdf function. About to open fdf_file.')
        fdf_file = open(os.path.join(destination_dir, 'vs300.fdf'), 'wb')
        logging.debug('Opened fdf_file. About to write to it.')
        fdf_file.write(fdf)
        fdf_file.close()
        logging.debug('Wrote to fdf_file and closed it.')
        cmd = 'pdftk "{0}" fill_form "{1}" output "{2}" dont_ask'.format(
            './styles/vs300.pdf',
            os.path.join(destination_dir, 'vs300.fdf'),
            os.path.join(destination_dir, 'vs300.pdf')
        )
        logging.debug('About to send this command to pdftk: ' + cmd)
        os.system(cmd)
        logging.debug('Command sent. Removing temporary fdf file.')
        os.remove(os.path.join(destination_dir, 'vs300.fdf'))

我可以成功创建一个元组列表以提供给 forge_fdf,元组中的第一项是字段名称,第二项是我要添加的字段的文本。

我不知道该怎么做是选中一个框。如果我在我的 pdf 上运行 pdftk dump_data_fields,这是我要检查的复选框的条目:

FieldType: Button
FieldName: Absolute Divorce
FieldNameAlt: Absolute Divorce
FieldFlags: 0
FieldJustification: Left
FieldStateOption: Off
FieldStateOption: On

我不知道如何 a) 更改 fdf 文件以使复选框显示为已被选中,以及 b) 如何使用 fdfgen 实际进行更改。

【问题讨论】:

    标签: python python-3.x pdf-generation pdftk fdf


    【解决方案1】:

    通过 fdfgen 的复选框字段通过 fdf_data_names 变量而不是 fdf_data_strings。您还应该检查 PDF 本身以查看复选框用于其“开启”触发器的内容。

    您对 forge_fdf 的调用将如下所示:

    forge_fdf("", fields, data_names)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 2016-09-13
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多