0

我们使用 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;
}
4

1 回答 1

0

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

于 2022-02-21T10:23:29.860 回答