Файл не начинается с "% PDF-" - PullRequest
2 голосов
/ 06 февраля 2009

Я экспортирую содержимое HTML в PDF.

    System.IO.StringWriter sWriter = new System.IO.StringWriter();

    System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(sWriter);

    Response.Buffer = true;
    FormId.RenderControl(htmlWriter);
    Response.ContentType = "application/pdf";
    // Added appropriate headers
    Response.AddHeader("Content-Disposition", "inline; filename=XXX.pdf");
    Response.AddHeader("Content-Length", htmlWriter.ToString().Length.ToString());
    Response.Output.Write(sWriter.ToString());

    Response.Flush();
    Response.Close();

FormId - это мой Div последний контент ..

Я получаю сообщение об ошибке: «Файл не начинается с«% PDF - »"

Я включил Response.clear (); Выход не приходит

Ответы [ 3 ]

3 голосов
/ 06 февраля 2009

Вы выводите html (div, как вы сказали) перед pdf в потоке вывода, так что оба они объединяются. Это приводит к тому, что любое приложение, смотрящее на вывод, интерпретирует его как поврежденный файл. Я бы попробовал удалить первые две строки:

Response.Buffer = true;
FormId.RenderControl(htmlWriter);

Если это не решит проблему, добавьте вызов Response.Clear () перед всем.

Все это предполагает, что sWriter содержит PDF в начале этого блока кода - если нет, то может быть полезен немного больший контекст.

Несколько советов: если это возможно, переместите это со страницы в .ashx или другой IHttpHandler.

1 голос
/ 23 мая 2012

Я столкнулся с той же проблемой при записи HTML-контента в PDF.

Я наконец-то обнаружил, что эта проблема связана с недопустимым содержимым HTML.

Например, тег <ul> без закрывающего тега </ul>.

Как только я вставил правильные закрывающие теги, все работает отлично!

0 голосов
/ 06 февраля 2009

Сделайте Response.Clear () перед началом потоковой передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...