5

I create a panel in my page and i create dynamically divs and tables in page. When I convert to pdf with itextsharp it does not care my div or table styles and it gives me nasty look. How can I fix this. Here is my code to convert html.

String HTML = Session["xpdf"].ToString();
string filename = "\\xpdf\\xpdf____" + Request.QueryString["id"] + ".pdf";
string filepath = HttpContext.Current.Server.MapPath("\\xpdf\\xpdf____" + Request.QueryString["id"] + ".pdf");
Document document = new Document(PageSize.A4);
PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
document.Open();
HTMLWorker hw = new HTMLWorker(document);
hw.Parse(new StringReader(HTML));
document.Close();
ShowPdf(filename, filepath);
PdfAction action = new PdfAction(PdfAction.PRINTDIALOG);

and consider my html code looks like that:

<div>
   <table style="border:solid 1px #ccc; color:#000;">
      <tr>
          <td style="width:100px;color:#cc0000;"></td>
          <td style="width:10px">:</td>
          <td style="width:200px"></td>
      </tr>
   </table>
</div>
Kadir
  • 3,094
  • 4
  • 37
  • 57
  • There are many similar questions that might help you, have you seen [this](http://stackoverflow.com/q/430280/944681) or [this](http://stackoverflow.com/q/5321779/944681)? – Michal Klouda Jul 29 '13 at 08:07
  • Also, remember that `HTMLWorker` is deprecated and not supported anymore. Its replacement is the much more versatile [`XMLWorker`](http://demo.itextsupport.com/xmlworker/). – Alexis Pigeon Jul 29 '13 at 08:17
  • better use pechkin i also had many problems in itextsharp but once i got pechkin everything became easy – Alok Jul 29 '13 at 08:20
  • @AlexisPigeon thanks, I didn't know HTMLWorker does not support anymore. I fixed my code with XMLWorker. – Kadir Jul 29 '13 at 15:01

1 Answers1

7

Here is fixed new code.

Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
document.Open();
HTMLWorker hw = new HTMLWorker(document);
StringReader sr = new StringReader(HTML);
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
//hw.Parse(new StringReader(HTML));
document.Close();
ShowPdf(filename, filepath);
PdfAction action = new PdfAction(PdfAction.PRINTDIALOG);
Kadir
  • 3,094
  • 4
  • 37
  • 57