Подтвердить что ты не робот

Созданные iTextSharp PDF файлы теперь вызывают диалог сохранения в Adobe Reader X

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

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

4b9b3361

Ответ 1

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

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.

Ответ 2

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

HttpContext.Current.Response.End();

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