如何使用itextsharp使用css将html页面转换为pdf

本文关键字:转换 pdf html 何使用 itextsharp 使用 css | 更新日期: 2023-09-27 18:29:29

这是我的代码:

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);
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);** //the exception here
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();

错误是:

无法将"iTextSharp.text.html.simpleparser.CellWrapper"类型的对象强制转换为类型'iTextSharp.text.Paration'.

这个例外是什么?

如何使用itextsharp使用css将html页面转换为pdf

我不知道这是否是答案,但我发现iTextSharp对拥有有效的html很挑剔。我的测试有一张桌子开了两次,从来没有关过,我花了大约一个小时才注意到。这个例外与你所看到的非常相似。

使用A4大小的宽度;html设计的高度。

使用这组od代码从html创建pdf。

String htmlText = "<div>Your HTML text here</div>";
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + "''outfile.pdf", FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(htmlText));
document.Close();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "inline;filename=outfile.pdf");
Response.ContentType = "application/pdf";
Response.WriteFile(Request.PhysicalApplicationPath + "''outfile.pdf");
Response.Flush();
Response.Clear();