2013-04-08 3 views
0

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

В настоящее время я могу создавать PDF-файлы, и они предварительно заполняются просто отлично. Я даже могу редактировать и сохранять их в Adobe Reader на своем компьютере. Однако я обнаруживаю, что когда кто-то еще открывает те же файлы, им не разрешается сохранять формы.

Что нужно сделать, чтобы формы сохранялись всеми пользователями с помощью Adobe Reader? Вот код, я должен создать PDF:

Dim pdfReader As PdfReader = New PdfReader(formPath) 
pdfReader.RemoveUsageRights() 
Dim pdfStamper As PdfStamper = New PdfStamper(pdfReader, New FileStream(outputPath, FileMode.Create)) 
Dim pdfFormFields As AcroFields = pdfStamper.AcroFields 
Dim xfdfReader As XfdfReader = New XfdfReader(xfdfPath) 

pdfFormFields.SetFields(xfdfReader) 
pdfStamper.Close() 

я использовал, чтобы иметь проблему, что даже я не мог сохранить формы в Reader, и именно поэтому я добавил эту строку:

pdfReader.RemoveUsageRights() 

Это сделало так, что I может редактировать PDF-файл, который заставляет меня думать, что все было решено. Но никто другой не может.

+1

У вас есть только Adobe Reader, а не Adobe Acrobat? И какая версия? – mkl

+0

Yep.I использовал Acrobat для создания формы PDF, но я определенно открываю файлы в Reader. Я использую Reader XI (очевидно, Adobe решила, что римские цифры прохладны где-то вдоль линии). Я попытался открыть файл на другом компьютере с помощью Reader 9, поэтому он может быть таким же простым, как проблема с версией, и мне нужны мои пользователи для установки Reader XI. –

+0

Действительно, Adobe изменила то, что позволяет пользователям своих читателей по умолчанию. Тем не менее, если вы используете PdfStamper в режиме добавления, вы можете даже обслуживать пользователей более старых версий Adobe Reader. – mkl

ответ

1

Обратитесь к примеру ReaderEnabledForm.cs. Он описывает различные способы, чтобы заполнить Читатель Enabled формы:

  1. нарушения Ридера включение
  2. Удаления Ридера включения
  3. Сохраняя Ридер включение

Вы уже пробовали 1 и 2, в то время как вы запрашиваете 3, включая добавление дополнительных параметров при создании экземпляра PdfStamper:

new PdfStamper(pdfReader, New FileStream(outputPath, FileMode.Create), '\0', true); 
1

Вы просто используете это в своем коде. При создании PdfStamper вам нужно добавить дополнительные параметры, такие как это:

PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(
    newPath, FileMode.CreateNew, FileAccess.Write), '\0', true); 

Это будет делать трюк.