Как сгладить некоторые поля формы PDF, но не все

Я использую C# и iTextSharp для PDF-файлов. У меня есть шаблон PDF, в котором есть поля формы для информации, а также поля формы для электронных подписей. Мне нужно, чтобы персонал заполнил нашу часть формы, затем в коде сгладил эту часть (оставив только поля подписи), а затем я передам PDF-файл API DocuSign, чтобы пользователь подписал документ в электронном виде.

У меня есть требования, чтобы только поля, которые должны быть доступны для редактирования пользователем (подпись), были полями формы, когда они достигают API DocuSign. Я должен сгладить все остальные поля, прежде чем передать их в API DocuSign (DocuSign автоматически может пометить поля формы для подписи).

Кто-нибудь знает как это сделать? Я думал о том, чтобы получить положение полей подписи и после выравнивания всего PDF-файла добавить поля формы обратно с помощью iTextSharp, но я чувствую, что это хак.


person Wayne    schedule 02.07.2013    source источник


Ответы (4)


Если вы хотите сгладить конкретное поле, а не весь документ, я считаю, что вы можете использовать следующее:

Stamper.FormFlattening = true;
Stamper.PartialFormFlattening("FieldName");

Единственным недостатком этого метода является то, что вам нужно перечислить все поля, которые необходимо сгладить. Я думаю, что они также должны содержать значение (т.е. вы не можете сгладить пустое поле).

person ovaltein    schedule 02.07.2013

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

http://www.4guysfromrolla.com/articles/030211-1.aspx

person COLD TOLD    schedule 02.07.2013

Пожалуйста, ознакомьтесь со следующей страницей руководства DocuSign REST API, так как на ней есть полезная информация о том, что вы можете делать с полями форм Adobe, а также о некоторых особых случаях:

http://www.docusign.com/p/RESTAPIGuide/Content/REST%20API%20References/Document%20Parameters.htm

person Ergin    schedule 02.07.2013

Для формы XFA вы получаете

Частичное выравнивание формы не поддерживается для форм XFA.

исключение, если вы используете PartialFormFlattening.

Чтобы сгладить некоторые поля, которые я использовал

stamper.AcroFields.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null);

убедитесь, что вы используете полное имя поля (например, для имени W-9) используйте поле "topmostSubform[0].Page1[0].f1_1[0]", а не "f1_1"), иначе оно не будет работать.

Я также попытался удалить XFA с помощью

PdfDictionary acro =
   (PdfDictionary)PdfReader.GetPdfObject(
           pdfReader.Catalog.Get(PdfName.ACROFORM));
                acro.Remove(PdfName.XFA);

как описано здесь но у меня такое же исключение.

person Daniil Grankin    schedule 07.11.2016