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) をレンダリングしているため、2 つが結合されます。これにより、出力を確認するすべてのアプリが、それを破損したファイルとして解釈します。最初の 2 行を削除してみます。

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 に答える