我如何使用带有样式的html文件来创建带有iTextSharp的pdf文件

时间:2013-02-05 08:40:58

标签: c# asp.net html pdf itextsharp

您好我想在我的 ASP.NET 应用程序中创建一个pdf,为此我使用iTextSharp。我的想法是用HTML文件创建一个pdf。我希望如果我点击Button我会阅读带有背景图片和更多样式的HTML文件。

我的申请必须做..

  1. 从文件夹App.Data中读取HTML文件。 (使用System.IO)
  2. 使用此样式从此HTML文件中创建PDF! (using iTextSharp.text; using iTextSharp.text.pdf;) 3.将PDF文件作为电子邮件发送。 (使用System.Net.Mail;使用System.Net.Mime;)
  3. 我尝试创建PDF,如果有效,但如果我在HTML文件中使用样式,则不会显示样式:(

    这是我的代码:

    string html;
    
    using (StreamReader reader = new StreamReader(Server.MapPath("~/App_Data/mail.html"), System.Text.Encoding.Default))
    {
        html = reader.ReadToEnd(); //here i read the html file to this string
        HTMLtoPdf(html);
    }
    
    private void HTMLtoPdf(string HTML) 
    {
        Document doc = new Document();
        PdfWriter.GetInstance(doc, new FileStream(Request.PhysicalApplicationPath + "\\test.pdf", FileMode.Create));
        doc.Open();
        HTMLWorker hw = new HTMLWorker(doc);
        hw.Parse(new StringReader(HTML));
        doc.Close();
    
        ShowPdf("test.pdf");
    }
    
    private void ShowPdf(string s)
    {
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "inline;filename=" + s);
        Response.ContentType = "application/pdf";
        Response.WriteFile(s);
        Response.Flush();
        Response.Clear();
    }
    

    例如我的HTML文件:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html><head>
    
    </head><body styles="background-color:#E0E0E0; font-weight:bold; font-family:Arial; font-size:120%;">
    
    <div>
        Test
    </div>
    
    </body></html> 
    

    在这个例子中,我使用背景颜色,但它不起作用:(我只得到HTML文本:没有样式的测试。

2 个答案:

答案 0 :(得分:0)

你拼错了“风格”。

<body styles="background-color:#E0E0E0;

应该是

<body style="background-color:#E0E0E0;

答案 1 :(得分:0)

你应该在这里使用bgcolor而不是background-color