我正在将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();输出不会出现
发布于 2009-02-06 04:30:59
您将在输出流中的pdf之前呈现html (如您所说的div),因此将两者组合在一起。这会导致任何查看输出的应用程序将其解释为损坏的文件。我会尝试删除前两行:
Response.Buffer = true;
FormId.RenderControl(htmlWriter);如果这还不能解决问题,那么在所有东西之前添加一个Response.Clear()调用。
所有这些都假设sWriter在代码块的开头包含PDF --如果没有,多一点上下文可能会有所帮助。
一些建议:如果可能的话,将它移到页面之外的.ashx或其他IHttpHandler。
发布于 2012-05-23 19:46:36
在将一些HTML内容写入PDF时,我也遇到了同样的问题。
我最终发现是无效的HTML内容导致了这个问题。
例如,没有结束标记</ul>的<ul>标记。
一旦我放入正确的结束标记,它就能正常工作!
发布于 2009-02-06 04:38:00
在开始流式传输输出之前执行一个Response.Clear()。
https://stackoverflow.com/questions/519108
复制相似问题