【问题标题】:How to check / uncheck checkboxes in a PDF with Python (preferably PyPDF2)?如何使用 Python(最好是 PyPDF2)选中/取消选中 PDF 中的复选框?
【发布时间】:2016-02-21 16:45:46
【问题描述】:

我有下面的代码

d = {'Name': 'James', ' Date':'1/1/2016','City':'Wilmo','County':'United States'}
input_file = PdfFileReader(open(baseDir + 'medicareRRF.pdf', "rb"))
inFields = input_file.getFields()
watermark = PdfFileReader(open(baseDir + "justSign.pdf", "rb"))
output_file = PdfFileWriter()
input_page = input_file.getPage(0)
input_page.mergePage(watermark.getPage(0))
output_file.addPage(input_page)
thisPage = output_file.getPage(0)
output_file.updatePageFormFieldValues(thisPage, d)

使用字典 (d) 正确填写 PDF,但是如何选中和取消选中 PDF 上的复选框?这是其中一个框的 getField() 信息:

u'Are you ok': {'/FT': '/Btn','/Kids': [IndirectObject(36, 0),
IndirectObject(38, 0)],'/T': u'Are you ok','/V': '/No'}

我尝试添加{'Are you ok' : '/Yes'} 和其他几种类似的方法,但没有任何效果。

【问题讨论】:

    标签: python pdf checkbox pypdf


    【解决方案1】:

    我遇到了同样的问题,看了好几个地方,对找不到答案感到失望。在查看我的代码、pyPDF2 代码和 Adob​​e PDF 1.7 规范几个小时后,我终于弄明白了。如果您调试到 updatePageFormFieldValues,您会发现它只使用 TextStringObjects。复选框不是文本字段——甚至 /V 值也不是文本字段,至少对我来说这似乎违反直觉。对该函数的调试表明,复选框是 NameObjects,所以我创建了自己的函数来处理它们。我创建了两个字典:一个只包含我传递给内置 updatePageFormFieldValues 函数的文本值,另一个只包含复选框值。我还设置了 /AS 以确保可见性(请参阅 PDF 规范)。我的函数如下所示:

    def updateCheckboxValues(page, fields):
    
        for j in range(0, len(page['/Annots'])):
            writer_annot = page['/Annots'][j].getObject()
            for field in fields:
                if writer_annot.get('/T') == field:
                    writer_annot.update({
                        NameObject("/V"): NameObject(fields[field]),
                        NameObject("/AS"): NameObject(fields[field])
                    })
    

    但是,据我所知,您使用 /1、/On 还是 /Yes 取决于表单的定义方式或 PDF 阅读器正在查找的内容。对我来说,/1 有效。

    【讨论】:

    • 知道如何填充保管箱吗?
    • 我相信/AP这个键指定了应该使用哪个名字来表示选中状态。
    • 我无法使用相同的代码检查 pdf 中的值
    猜你喜欢
    • 2012-11-05
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    相关资源
    最近更新 更多