2013-08-28 2 views
0

Это мой код:Как конвертировать html-страницу в pdf с помощью css с помощью itextsharp?

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 ».

Это исключение?

+0

Какую версию iTextSharp вы используете? –

+0

У вас есть ответ? – Velu

+0

перейдите по этой ссылке и попробуйте с ее версией itextsharp ... она может решить вашу ошибку. –

ответ

0

использование вы можете A4 размер ширина & высота для html украшение.

+0

Я так не думаю, что я изменил ширину и высоту, но ту же ошибку – user2717468

-1

использовать этот код кода для создания pdf из html.

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(); 
1

Я не знаю, является ли это ответом, но я обнаружил, что iTextSharp является разборчивым относительно наличия действительного html. У моих тестов был стол, который был открыт дважды и никогда не закрывался, и мне потребовалось около часа, чтобы я заметил. Исключение было очень похоже на ту, что у вас есть.

Смежные вопросы