繁体   English   中英

将签名字段添加到 javascript 中的 pdf

[英]Add Signature field to pdf in javascript

经过数小时寻找解决方案后,我决定在 stackoverflow 上提出我的第一个问题。

我们的应用程序使用 pdf-lib ( https://www.npmjs.com/package/pdf-lib ) 来修改现有的 PDF,例如添加图像。 我们现在正在寻找一种将签名表单字段也广告到 PDF 的方法。 使用 pdf-lib,可以添加一堆表单字段,签名字段除外。 可以获得它们( https://pdf-lib.js.org/docs/api/classes/pdfform#getsignature ),但与其他字段不同,没有创建方法(例如https://pdf-lib.js .org/docs/api/classes/pdfform#createtextfield )。

我深入研究了代码,发现可以访问 PDFForms AcroForm ( https://pdf-lib.js.org/docs/api/classes/pdfform#acroform )。 可以使用它添加字段,但我无法事先创建正确的字段(我认为它必须是 PDFSignature 或 PDFAcroSignature)。

我发现 PDFAcroText 等其他字段有创建方法

  class PDFAcroText extends PDFAcroTerminal {
  static fromDict = (dict: PDFDict, ref: PDFRef) => new PDFAcroText(dict, ref);

  static create = (context: PDFContext) => {
    const dict = context.obj({
      FT: 'Tx',
      Kids: [],
    });
    const ref = context.register(dict);
    return new PDFAcroText(dict, ref);
  };

这些被包装函数调用(如提到的 createTextfield ):

createTextField(name: string): PDFTextField {
    assertIs(name, 'name', ['string']);
    const nameParts = splitFieldName(name);

    const parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);

    const text = PDFAcroText.create(this.doc.context);
    text.setPartialName(nameParts.terminal);

    addFieldToParent(parent, [text, text.ref], nameParts.terminal);

    return PDFTextField.of(text, text.ref, this.doc);
  }

我寻找了提供添加签名表单字段可能性的其他 js 库,但我无法找到答案——除了付费使用 pdfjs.express 之类的库。

假设他们能够添加这样的字段,那么一定有办法做到这一点!

如果你们中的任何人想出如何做到这一点,或者是否有其他解决方案,请告诉我。

先感谢您!

问候亚历克斯

Acrobat PRO 本身没有放置直接“签名”字段的选项。 您可以“请求”签名,但只能使用 Adobe 的服务,并且需要 email。

如果您打算通过代码添加签名,请查看他们的“填写表单”示例。 他们将图像放在按钮字段的顶部,但图像字段也可以。

  const signatureImageField2 = form.getButton('button-signature-field')
  signatureImageField2.setImage(signatureImage)

  const factionImageField = form.getField('image-signature-field_af_image')
  factionImageField.setImage(signatureImage)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM