【问题标题】:Empty Adobe PDF fields stripped from document when returned from DocuSign从 DocuSign 返回时从文档中删除的空 Adob​​e PDF 字段
【发布时间】:2022-02-23 00:30:09
【问题描述】:

我们使用 Adob​​e Acrobat 向 PDF 添加字段。我们希望能够访问这些字段并引用它们的确切位置,以便在从 DocuSign 取回 PDF 后,我们可以在它们的位置标记内容。我们通过使用 C# ITextSharp Text PDF 库操作 PDF 的字节来做到这一点。不幸的是,一旦返回 PDF,在 Adob​​e Acrobat 中打开它就会发现所有字段都已从我们的文档中删除。

我们的 C# 使用我们数据库中的文本数据填充这些字段中的大部分。 2 个字段留空,因为我们想在通过 DocuSign 签署文档后使用 C# 将某人签名的静态图像叠加在他们的位置上。

这对于在 DocuSign 获取我们的文档之前填充的内容是可以的,因为删除该字段不会在视觉上忽略以前输入到这些字段中的数据。当我们需要将静态签名图像标记到文档中时,这并不好。我们对 ITextSharp 的使用依赖于查找具有特定 Adob​​e Acrobat ID 的字段、获取其位置并在该位置“标记”静态图像。

有没有办法告诉 DocuSign 我们想要维护所有 PDF 字段、它们的位置和 ID?

public byte[] StampStaticSignature(byte[] documentBytes)
{
    var signatureContainer = new SignatureContainer();
    var signatureBytes = signatureContainer.GetSignatureBytes();
    var reader = new PdfReader(documentBytes);
    var updatedForm = new byte[] { };
    using var stream = new MemoryStream();
    var stamper = new PdfStamper(reader, stream);
    var pdfFormFields = stamper.AcroFields;
    var signatureImage = GetImageFromStream(signatureBytes);

    //_adobeSignatureFields is a list of strings used to 
    //identify the signature fields by their ID set in Adobe Acrobat.
    foreach (var signatureField in _adobeSignatureFields)
    {
        var sigPosition = pdfFormFields.GetFieldPositions(signatureField);
        var page = sigPosition[0];
        var x1 = sigPosition[1];
        var y1 = sigPosition[2];
        var x2 = sigPosition[3];
        var y2 = sigPosition[4];
        var contentBytes = stamper.GetOverContent((int)page);
        var signatureFieldHeight = y2 - y1;
        var signatureFieldWidth = x2 - x1;

        signatureImage.ScaleToFit(signatureFieldWidth, signatureFieldHeight);
        signatureImage.SetAbsolutePosition(x1, y1);
        contentBytes.AddImage(signatureImage);
    }

    stamper.FormFlattening = false;
    stamper.Close();
    reader.Close();
    updatedForm = stream.ToArray();
    stream.Dispose();
    return updatedForm;
}

【问题讨论】:

  • 你能分享你的C#代码吗?

标签: docusignapi docusignconnect


【解决方案1】:

Hank,正如 Inbar 已经提到的,我们需要检查您的代码和 API 日志,看看可能出了什么问题。很难说哪里出了问题,尤其是在使用像 ITextSharp 这样的第三方软件时。我建议通过访问我们的support center 并添加对案例 09033616 的引用来与我们一起打开一个案例

【讨论】:

  • 我添加了我们用来标记这些字段顶部的代码。
  • Hank,在“文档已通过 DocuSign 签名”之后尝试编辑信封文档将使信封无效。我认为您需要的是使用 Stamp 选项卡/字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2018-08-27
  • 2020-11-21
相关资源
最近更新 更多