Созданные iTextSharp PDF-файлы теперь вызывают диалоговое окно «Сохранить» в Adobe Reader X - PullRequest
22 голосов
/ 24 февраля 2011

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

Если это помогает, я использую PdfReader для чтения данных из существующего документа PDF (этот оригинальный документ не вызывает диалоговое окно Сохранить впоявляются).Затем я использую PdfWriter для создания нового документа и AddTemplate для копирования части исходного документа в новый.

Ответы [ 2 ]

28 голосов
/ 25 февраля 2011

Проблема заключается в следующей строке:

Response.OutputStream.Write(MS.GetBuffer(), 0, MS.GetBuffer().Length)

Метод GetBuffer возвращает весь внутренний буфер, который больше фактического содержимого.В плохом PDF-файле содержится около 10 КБ мусорного содержимого в конце (нулевых байтов), в хорошем PDF-файле всего несколько байтов.Используйте метод ToArray () потока памяти, чтобы получить файл PDF, и проблема будет решена.Вы также получите меньшие файлы.

byte[] pdf = MS.ToArray();
Response.OutputStream.Write(pdf, 0, pdf.Length);

Также установите «Content-Length» с длиной массива pdf.

1 голос
/ 14 августа 2012

Также добавьте

HttpContext.Current.Response.End ();

После заполнения вашего PDF-файла.

...