Asp.net 文件不以';开头%PDF-';

Asp.net 文件不以';开头%PDF-';,asp.net,pdf,export,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.ContentTyp

我正在将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-”开头”


我已经包括了响应。clear();输出不来

您在输出流中呈现的是html(如您所说的div),而不是pdf,因此这两者是结合在一起的。这会导致任何查看输出的应用程序将其解释为已损坏的文件。我会尝试删除前两行:

Response.Buffer = true;
FormId.RenderControl(htmlWriter);
如果这不能解决问题,请在所有操作之前添加Response.Clear()调用

这都是假设sWriter在这个代码块的开头包含PDF——如果不是,多一些上下文可能会有所帮助


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

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

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

我最终发现无效的HTML内容导致了这个问题

例如,
标记而不关闭标记


一旦我把正确的结束标签,它的工作很好

很好的建议,http处理程序的开销比页面处理程序低得多。sWriter是否真的为您提供了有效的PDF文件?检查它的前四个字节。