Не удается открыть динамические PDF-файлы в Internet Explorer - PullRequest
2 голосов
/ 29 марта 2011

Я загружаю и сохраняю PDF в SQL.Затем люди могут открыть этот PDF-файл в веб-браузере (IE).Сегодня я обновил Acrobat Reader и не могу открыть тот же PDF-файл в веб-браузере.Я могу сохранить его на рабочем столе, а затем открыть его.В диалоговом окне нет кнопки [Открыть], и он говорит, что файл может быть поврежден

Имя: admin.pdf

Тип: Adobe Acrobat Document, 37,8 КБ

От: domain.com

*

Динамически сгенерированный PDF ', ссылка на которую приведена ниже: http://domain.com/admin.asp?cmd=Download_PDF&id=20112

Я принимал все решения на веб-сайтах Adobe и Microsoft.Я не могу открыть PDF-файлы непосредственно в IE8.

Мой бывший код ASP был:

    Response.ContentType = rsFile("filetype")
    Response.BinaryWrite rsFile("filedata")

Тогда я просто изменил его, чтобы сделать PDF загружаемым файлом, теперь я могу - по крайней мере -загрузите и откройте его во внешнем Acrobat Reader (в диалоговом окне отображаются кнопки [Открыть] [Скачать] [Отмена]):

 Response.Buffer = TRUE
    'Response.ContentType = "application/pdf"
    Response.ContentType = rsFile("filetype")
    Response.AddHeader "Content-Disposition", "attachment; filename=" & filename & ".pdf"       
    Response.BinaryWrite rsFile("filedata")

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Я только что наткнулся на эту точно такую ​​же проблему сегодня и выкопал решение.

У нас также есть сайт, который обслуживает PDF-файлы, хранящиеся в базе данных SQL. Когда страница aspx пытается открыть файл pdf, она отображает точно такой же диалог, который вы описываете. Это влияет только на IE8 (ни у кого нет другой версии IE, которую я мог бы протестировать); самые последние версии Chrome, Firefox и Safari загрузили PDF-файлы в браузер без происшествий.

Итак, после того, как я нашел ваш вопрос, я покопался еще немного и обнаружил следующее:

http://forums.adobe.com/thread/792591

Начиная с Adobe Reader 9.4.2, была введена ошибка, связанная с наборами символов, так что если Content-Type имеет значение кодировки, Adobe в конечном итоге будет искать раздел реестра, который не существует.

Я сделал то, что предложил jspraul в ответе 17, и добавил:

Response.Charset = null;

Как и вы, я просто установил свой Content-Type на application / pdf, но поскольку мой Response.Charset имел значение UTF-8 по умолчанию, Adobe искала ключ реестра, связанный с UTF-8, и не смогла Найди это. Надеюсь, Adobe в какой-то момент исправит это, но это должно решить вашу проблему в промежутке.

1 голос
/ 29 марта 2011

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

Если конкретная версия Adobe Reader не открывает PDF-файл, возможно, он поврежден.Убедитесь, что ваш ASP-код тесно упакован, и вы не по ошибке пишете пробел или новую строку в браузере.Не забудьте вызвать Response.Flush в конце.

Если вы добавите заголовок вложения, появится диалоговое окно сохранения файла, и плагин PDF не будет перехватывать PDF-файл внутри браузера.

Ваш браузер также может загружать более старую поврежденную копиюPDF из кеша.Очистите кеш IE (временные файлы Интернета).

...