0

iTextSharplibを使用してHTMLページをPDFにエクスポートしようとしています。まず、Aspxページにあるテーブルを印刷しようとしています。PDFは正常に作成されましたが、PDFには何もありません。私は以下のこのコードを使用しています:

protected void btnExportToPdf_Click(object sender, EventArgs e)
    {

        btnExportToPdf.Visible = false;


        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);

        exportTable.RenderControl(hw);

        //this.Page.RenderControl(hw);

        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End(); }
4

1 に答える 1

1

今、私はあまり熟練していませんが、私にとっての問題は、あなたが実際にファイルに文字列を書き込んでいないように見えます。初期化するいくつかの異なる文字列オブジェクトが表示され、それにHTMLが追加されているのがわかりますが、実際にそれらをPDFに書き込んでいるのはわかりません。これは、HTMLをPDFに解析するための私の通常のプロセスです。おそらく、それを見て、何が欠けているかを確認できます。

System.Text.StringBuilder store = new System.Text.StringBuilder();
string line;

     while ((line = htmlReader.ReadLine()) != null)
     {
       store.Append(line + Environment.NewLine);
     }

string html = store.ToString();
FileStream stream = new FileStream(newFileName, FileMode.Create, FileAccess.Write);
Document document = new Document(PageSize.LETTER, 15, 15, 35, 25);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
System.Collections.Generic.List<IElement> htmlarraylist = new List<IElement>(HTMLWorker.ParseToList(new StringReader(html), new StyleSheet()));

     foreach (IElement element in htmlarraylist)
     {
        document.Add(element);
     }

document.Close();

少なくとも私が思いついたのは、生成されたテキストを実際にPDFに書き込んでいるようには見えないという事実でした。これがお役に立てば幸いです。

于 2012-08-09T20:09:42.127 に答える