C# 如何使用C从asp.net中的.htm页面创建PDF文件#

C# 如何使用C从asp.net中的.htm页面创建PDF文件#,c#,pdf-generation,C#,Pdf Generation,我有一个.htm页面,其中的设计是在与css文件的页面。现在我想把这个.htm页面创建成PDF文档。 那么如何在c#中使用ASP.Net实现这一点呢?您可以使用itext sharp 进口这些 using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; using iTextSharp.text; 接下来是添加此方法 public void ConvertHtmlStringToPDF() { StringBu

我有一个.htm页面,其中的设计是在与css文件的页面。现在我想把这个.htm页面创建成PDF文档。
那么如何在c#中使用ASP.Net实现这一点呢?

您可以使用itext sharp

进口这些

using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using iTextSharp.text;
接下来是添加此方法

public void ConvertHtmlStringToPDF()
{
    StringBuilder sb = new StringBuilder(); 
    StringWriter tw = new StringWriter(sb); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 

    ///This is the panel from the webform
    pnlPDF.RenderControl(hw);
    string htmlDisplayText = sb.ToString(); 
    Document document = new Document();
    MemoryStream ms = new MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(document, ms);
    StringReader se = new StringReader(htmlDisplayText);
    HTMLWorker obj = new HTMLWorker(document);
    document.Open();
    obj.Parse(se);
    // step 5: we close the document
    document.Close();
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=report.pdf");
    Response.ContentType = "application/pdf";
    Response.Buffer = true;
    Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
    Response.OutputStream.Flush();
    Response.End();
}
然后在Web表单中,您需要有一个包含html的面板。这样做的目的是让您能够在服务器端调用它

<asp:Panel ID="pnlPDF" runat="server">
    <div>
      html contents
    </div>
</asp:Panel>

html内容

您可以使用itext sharp

进口这些

using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using iTextSharp.text;
接下来是添加此方法

public void ConvertHtmlStringToPDF()
{
    StringBuilder sb = new StringBuilder(); 
    StringWriter tw = new StringWriter(sb); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 

    ///This is the panel from the webform
    pnlPDF.RenderControl(hw);
    string htmlDisplayText = sb.ToString(); 
    Document document = new Document();
    MemoryStream ms = new MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(document, ms);
    StringReader se = new StringReader(htmlDisplayText);
    HTMLWorker obj = new HTMLWorker(document);
    document.Open();
    obj.Parse(se);
    // step 5: we close the document
    document.Close();
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=report.pdf");
    Response.ContentType = "application/pdf";
    Response.Buffer = true;
    Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
    Response.OutputStream.Flush();
    Response.End();
}
然后在Web表单中,您需要有一个包含html的面板。这样做的目的是让您能够在服务器端调用它

<asp:Panel ID="pnlPDF" runat="server">
    <div>
      html contents
    </div>
</asp:Panel>

html内容

那么如何使用iTextSharp对html页面执行此操作呢?iTextSharp需要在后面的代码上运行。我不确定是否有办法只在html页面中使用它。但据我所知,仅仅使用纯html是无法实现的那么,如何使用iTextSharp为html页面执行此操作呢?iTextSharp需要在后面的代码上运行。我不确定是否有办法只在html页面中使用它。但据我所知,仅仅使用纯html是无法实现的