首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件不是以'%PDF-‘开头

文件不是以'%PDF-‘开头
EN

Stack Overflow用户
提问于 2009-02-06 04:28:04
回答 3查看 8.6K关注 0票数 2

我正在将HTML内容导出为PDF。

代码语言:javascript
复制
    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();输出不会出现

EN

回答 3

Stack Overflow用户

发布于 2009-02-06 04:30:59

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

代码语言:javascript
复制
Response.Buffer = true;
FormId.RenderControl(htmlWriter);

如果这还不能解决问题,那么在所有东西之前添加一个Response.Clear()调用。

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

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

票数 3
EN

Stack Overflow用户

发布于 2012-05-23 19:46:36

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

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

例如,没有结束标记</ul><ul>标记。

一旦我放入正确的结束标记,它就能正常工作!

票数 1
EN

Stack Overflow用户

发布于 2009-02-06 04:38:00

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/519108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档