Почему API DocuSign устанавливает неправильные значения в предварительно заполненной форме при загрузке? - PullRequest
0 голосов
/ 16 мая 2019

Мне удалось создать конверт с примерно 6 предварительно заполненными документами PDF, добавить получателя, добавить около 4 вкладок для подписи и успешно загрузить конверт в DocuSign.Я следовал их примеру на C # почти построчно, и он работал отлично.Я могу создать встроенный URL и подписать документ до завершения.Единственная проблема, однако, заключается в том, что он автоматически заполняет некоторые значения формы неправильно.Я не могу понять, как заставить API оставить форму как есть и собирать только подписи.

Загружаемые документы представляют собой стандартные формы PDF с предварительно заполненными данными.Метки данных на полях действительно уникальны, но структурированы аналогично.Например, у меня есть несколько ящиков с тремя полями: месяц, день, год.Например, месяцы для двух полей даты могут быть SignedDate.MM и DateOfBirth.MM.Если у меня значение в DateOfBirth.MM равно 05, но в SignedDate.MM ничего нет, API устанавливает SignedDate.MM на 05 при загрузке, чего не должно быть.

Есть линастройка или что-то, что я делаю, может вызвать такое поведение?Для справки, если я вручную загружу документ через их онлайн-интерфейс, эта проблема не возникает.У меня нет шаблонов или пользовательских полей, настроенных в моей учетной записи.Я также попытался установить TransformPdfFields в false и TemplateLocked в true на Документах, Подписывающих и Конверте.Пока ничего не получалось.

Вот как я создаю конверт, документы и т. Д.: * 10101 *

// Create the documents
var docs = new List<Document>();
docs.Add(new Document()
{
    DocumentBase64 = "CONTENT_HERE",
    Name = "my-doc",
    FileExtension = "pdf",
    DocumentId = "1"
}); 

// Create the tabs
var signTabs = new List<SignHere>();
signTabs.Add(new SignHere()
{
    RecipientId = "1",
    TabLabel = "Sign Here",
    AnchorString = "<Person.Signature>",
    AnchorIgnoreIfNotPresent = "true",
    AnchorMatchWholeWord = "true"
});

// Create the signing information
var signers = new Signer[] {
    new Signer()
    {
        Email = "test@test.com",
        Name = "Test Person",
        ClientUserId = "1000",
        RecipientId = "1",
        RoutingOrder = "1",
        Tabs = new Tabs() { SignHereTabs = signTabs }
    }
};

// Create the recipients
var recipients = new Recipients() { Signers = new List<Signer>(signers) };

// Create the envelope
var envelope = new EnvelopeDefinition()
{
    EmailSubject = "Document Signing",
    Documents = docs,
    Recipients = recipients,
    Status = "sent"
};

return envelope;

Любое понимание этой проблемы будет оценено!

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

DocuSign смог воспроизвести проблему с их стороны, и они отправили отчет об ошибке своим разработчикам. Они не уверены, почему это происходит, но считают, что это как-то связано со скрытым атрибутом / аннотацией в самих полях формы.

Тем временем я смог запустить PDF через Spire.PDF, найти все пустые поля формы и установить их значения в пустую строку. Кажется, что это не должно иметь никакого эффекта (установка пустого значения на пустое значение), но Spire.PDF должен сбрасывать некоторые атрибуты / аннотации под обложками, потому что это решает мою проблему.

0 голосов
/ 16 мая 2019

Если в ваших документах PDF есть поля PDF, вам нужно будет преобразовать поля в поля DocuSign.

Основная техника - попросить DocuSign конвертировать их.После преобразования полей вам нужно будет назначить их одному или нескольким получателям конвертов.

Это связано с тем, что поля формы PDF знают только о форме в целом.Напротив, поля DocuSign (также известные как вкладки) всегда связаны с определенным получателем (ями).Это позволяет каждому получателю обновлять / подписывать свои собственные поля.(Вы также можете разрешить изменение поля несколькими получателями, но это другая тема.)

Чтобы преобразовать поля формы PDF в поля DocuSign, ознакомьтесь с документацией .

В итоге вы будете использовать составные шаблоны, чтобы указать, что получателем является defaultRecipient (поэтому им будут назначены поля формы PDF), и указать, что поля формы PDF каждого документа должны бытьпреобразуется (с использованием поля transformPdfFields):

{
    "status": "sent",
    "emailSubject": "Transform PDF Fields Example 1",
    "recipients": {
        "signers": [{
            "email": "john@email.com",
            "name": "Jon Dough",
            "recipientId": "1"
        }]
    },
    "compositeTemplates": [{
        "inlineTemplates": [{
            "sequence": "1",
            "recipients": {
                "signers": [{
                    "email": "john@email.com",
                    "name": "Jon Dough",
                    "recipientId": "1",
                    "defaultRecipient": "true"
                }]
            }
        }],
        "document": {
            "documentId": "1",
            "name": "irs_f4506t.pdf",
            "documentBase64": "<base64 encoded bytes>",
            "transformPdfFields": "true"
        }
    }]
}

Можно также использовать функцию составных шаблонов для назначения некоторых полей формы PDF получателю 1, а других - получателю 2, если необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...