使用c#和asp.net将HTML内容转换为Pdf

这里我试图将html div标签内的内容转换为pdf我发现以下错误:

输入字符串格式不正确

这是我尝试使用c#的代码:

public string getWhileLoopData() { string htmlStr = ""; SqlConnection thisConnection = new SqlConnection("Data Source=VELU-PC\\SQLEXPRESS;Initial Catalog=EEP;Trusted_Connection=True;"); SqlCommand thisCommand = thisConnection.CreateCommand(); thisCommand.CommandText = "select * from Product_category"; thisConnection.Open(); SqlDataReader reader = thisCommand.ExecuteReader(); while (reader.Read()) { string id = reader.GetString(6); string Name = reader.GetString(3); string Pass = reader.GetString(5); htmlStr += "
" + Name + "
Features:

" + Pass + "

"; } thisConnection.Close(); return htmlStr; } void generatetable() { divexcel.Visible = true; 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); divexcel.RenderControl(hw); StringReader sr = new StringReader(sw.ToString()); Document pdfDoc = new Document(PageSize.A4, 80f, 80f, -2f, 35f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); htmlparser.Parse(sr); pdfDoc.Close(); Response.Write(pdfDoc); Response.End(); } public override void VerifyRenderingInServerForm(System.Web.UI.Control control) { } protected void button_Click(object sender, EventArgs e) { generatetable(); }

这是我的HTML代码:

  
ID
Name
Features:

Pass

尝试将width =’200px’替换为width =’200’它应该可以工作。 从每个有宽度的地方删除px。

我建议不要使用htmlworker,因为它是旧的,并且不支持CSS样式,所以尝试使用htmlworker的xmlworker。 这很简单,请参考以下代码。
请参考这里

 protected void lnkPDF_Clicked(object sender, EventArgs e) { Document Doc; Doc = new Document(PageSize.A4, 10f, 10f, 50f, 20f); string filename = "PaySlip"; string outXml = selectedhtml.Value; outXml = "" + outXml; outXml = outXml.Replace("px", ""); outXml = outXml.Replace("
", "
"); MemoryStream memStream = new MemoryStream(); TextReader xmlString = new StringReader(outXml); using (Document document = new Document()) { PdfWriter writer = PdfWriter.GetInstance(document, memStream); document.Open(); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(outXml); MemoryStream ms = new MemoryStream(byteArray); XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, ms, System.Text.Encoding.UTF8); document.Close(); } Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".pdf"); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.BinaryWrite(memStream.ToArray()); Response.End(); Response.Flush(); }