0

这是我的代码:

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.Paragraph”类型。

这是什么异常?

4

3 回答 3

1

我不知道这是否是答案,但我发现 iTextSharp 对拥有有效的 html 很挑剔。我的测试有一张桌子,它打开了两次,从未关闭过,我花了大约一个小时才注意到。例外情况与您那里的例外情况非常相似。

于 2013-09-23T21:05:00.663 回答
0

使用 A4 大小的宽度和高度进行 html 设计。

于 2013-08-28T11:19:07.907 回答
-1

使用这组 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();
于 2013-08-28T11:36:25.563 回答