C # Response.Write PDF не работает с браузером Android - PullRequest
2 голосов
/ 06 июля 2011

В настоящее время у меня огромные проблемы со средой Android с экспортом в PDF.Я использую элемент управления просмотра отчетов, чтобы сделать отчет в массив байтов.Затем я использую метод response.binarywrite для вывода потока байтов в браузер.Это работает в любом браузере, а также iphone и ipad.Тем не менее, он не будет работать на Android.

В PDF говорится, что он поврежден.Когда я открываю PDF в блокноте, я вижу, что он экспортирует весь HTML-код моей страницы вместо байтового массива, созданного средством просмотра отчетов.

код:

    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;
    string filename = "attachment; filename=Data.pdf";

    byte[] bytes = ReportViewer1.ServerReport.Render(
       "PDF", null, out mimeType, out encoding,
        out extension,
       out streamids, out warnings);

    Response.Buffer = true;
    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", filename);
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();

Ответы [ 3 ]

0 голосов
/ 06 июля 2011

Согласно открытому выпуску Android 11422 обработка content-disposition не соответствует RFC. Попробуйте указать значение имени файла (filename="Data.pdf") и посмотрите, правильно ли оно сохраняется.

Кроме того, этот ответ StackOverflow предлагает установить MIME-тип в дополнение к типу контента.

0 голосов
/ 07 июля 2011

Если перед этим кодом есть любой HTML, он будет отправлен в браузер, поскольку Response.Clear() очищает только буферизованный вывод HTML и Response.Buffer работает, только если HTML не был выведен.

Попробуйте либо запретить вывод перед кодом (каким-либо образом), либо переместить этот код в собственный файл. Затем избавьтесь от выходного кода буферизации.

PS: это может или не может работать; У меня не было возможности проверить это. Также есть много проблем с расположением контента в Android, поэтому вы можете установить MIME-тип, как рекомендует GalacticCowboy.

0 голосов
/ 06 июля 2011

Вам нужно удалить весь HTML со своей страницы (время разработки).

...