我想签署一份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)
2条答案
按热度按时间qltillow1#
我找到解决办法了。我只是在这个例子中被误解了。(英语不是我的母语,Sry)。
在下面这一行,你必须把不同的坐标。所以box=(100,100,100,100)就是问题所在。我的盒子是一个点,所以它是不可见的。
现在有了这个,一切都很好:
k75qkfdt2#
sig_field_spec=SigFieldSpec(sig_field_name="Signa1", box=(50, 50, 200, 200),
尝试调整box参数,并查看签名字段和签名是否在生成的PDF文档中可见。