文件不以'%PDF-'开头

时间:2009-02-06 04:28:04

标签: asp.net pdf export

我正在将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是我过去的内容..

我收到的错误是“文件不以'%PDF - '”

开头

我已经包含了Response.clear();输出不会出现

3 个答案:

答案 0 :(得分:3)

你在输出流中的pdf之前渲染出html(如你所说的那样),所以两者结合起来。这导致任何应用程序查看输出将其解释为损坏的文件。我试着删除前两行:

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

如果这不能解决问题,请在所有内容之前添加Response.Clear()调用。

这是假设sWriter在此代码块的开头包含PDF - 如果没有,则更多一些上下文可能会有所帮助。

一些建议:如果可能的话,将其从页面移到.ashx或其他IHttpHandler。

答案 1 :(得分:1)

在将一些HTML内容写入PDF时,我遇到了同样的问题。

我终于发现无效的HTML内容会导致此问题。

例如,<ul>标记没有关闭标记</ul>

一旦我输入正确的结束标签,它就可以正常工作!

答案 2 :(得分:0)

在开始输出输出之前执行Response.Clear()。