我正在将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();输出不会出现
答案 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()。