2

我正在将 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(); 输出不来

4

3 回答 3

3

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

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

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

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

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

于 2009-02-06T04:30:59.077 回答
1

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

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

例如,<ul>不带结束标签的标签</ul>

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

于 2012-05-23T11:46:36.113 回答
0

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

于 2009-02-06T04:37:59.970 回答