python 如何使用pyHanko创建可见签名字段?

idfiyjo8  于 2023-05-21  发布在  Python
关注(0)|答案(2)|浏览(156)

我想签署一份PDF文件。我找到了一种使用pyHanko的方法,但签名不可见。
我想是因为包含签名的字段是不可见的。当我查看签名的属性时,它说这个场是不可见的。
你知道为什么签名(和字段)总是不可见吗?
我尝试了这个代码,我期待着有我的pdf文档签署的第一页。这是一个函数,它将需要签名的PDF文档的路径作为参数。(我只是举了这个例子:https://pyhanko.readthedocs.io/en/latest/lib-guide/signing.html#text-based-stamps)

def sign_ac(path):
    path_cert = "path to my cert.pfx"
    signer = signers.SimpleSigner.load_pkcs12(pfx_file=path_cert, passphrase=b'mdp')
    with open(path, 'rb') as doc:
        w = IncrementalPdfFileWriter(doc, strict=False)
        append_signature_field(w,
                               sig_field_spec=SigFieldSpec(sig_field_name="Signa1", box=(100, 100, 100, 100),
                                                           visible_sig_settings=VisibleSigSettings(rotate_with_page=True)),
                               )
        meta = signers.PdfSignatureMetadata(field_name='Signa1')
        pdf_signer = signers.PdfSigner(
            meta, signer=signer, stamp_style=stamp.TextStampStyle(
                stamp_text='Thus is custom text!\nSigned by: %(signer)s\nTime: %(ts)s',
                text_box_style=text.TextBoxStyle(
                    font=opentype.GlyphAccumulatorFactory('path to font police.ttf'),
                ),
                background=images.PdfImage('path to img.jpg')
            )
        )
        with open('path to signed doc.pdf', 'wb') as outf:
            pdf_signer.sign_pdf(w, output=outf)
qltillow

qltillow1#

我找到解决办法了。我只是在这个例子中被误解了。(英语不是我的母语,Sry)。
在下面这一行,你必须把不同的坐标。所以box=(100,100,100,100)就是问题所在。我的盒子是一个点,所以它是不可见的。

append_signature_field(w,
                           sig_field_spec=SigFieldSpec(sig_field_name="Signa1", box=(100, 100, 100, 100),
                                                       visible_sig_settings=VisibleSigSettings(rotate_with_page=True)),
                           )

现在有了这个,一切都很好:

append_signature_field(w,
                           sig_field_spec=SigFieldSpec(sig_field_name="Signature", box=(200, 100, 400, 160),
                                                       visible_sig_settings=VisibleSigSettings(rotate_with_page=True)),
                           )
k75qkfdt

k75qkfdt2#

sig_field_spec=SigFieldSpec(sig_field_name="Signa1", box=(50, 50, 200, 200),
尝试调整box参数,并查看签名字段和签名是否在生成的PDF文档中可见。

相关问题