2014-03-28 32 views
1

我正在用ITextSharp生成PDF,我正在生成pdf文档中的HTML表格,但它不能正确显示在PDF文件中。我已经复制生成的HTML和在HTML文件中检查,其在HTML文件中正确显示它IText sharp PDF Writer不能正确显示HTML

这是我在一个HTML文件 This is my HTML in an HTML file

这是我在PDF文件中获取HTML enter image description here

这是我的代码

var data = MyClass.GetHistory();//It returns a Data Table 
      var stream = new MemoryStream(); 
      Document document = new Document(PageSize.A4, 50, 50, 25, 25); 
      PdfWriter writer = PdfWriter.GetInstance(document, stream); 
      document.Open(); 

StringBuilder sb = new StringBuilder(); 
       sb.Append("<table style=\"border-collapse: collapse; border-spacing: 0; width: 100%; margin-bottom: 15px; border: 1px solid #dddddd; font-family: Arial, Helvetica, sans-serif; font-size:14px\">"); 
       sb.Append("<thead>"); 
       sb.Append("<tr>" + title + "</tr"); 
       sb.Append("<tr>"); 
       sb.Append(" <th style=\"padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; border: 1px solid #dddddd; border-bottom: 2px solid #dddddd; background:#DCEBFD; text-align:left;\">Date</th>"); 
       sb.Append(" <th style=\"padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; border: 1px solid #dddddd; border-bottom: 2px solid #dddddd; background:#DCEBFD; text-align:left;\">Description</th>"); 
       sb.Append(" <th style=\"padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; border: 1px solid #dddddd; border-bottom: 2px solid #dddddd; background:#DCEBFD; text-align:left;\">City</th>"); 
       sb.Append(" <th style=\"padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; border: 1px solid #dddddd; border-bottom: 2px solid #dddddd; background:#DCEBFD; text-align:left;\">State</th>"); 
       sb.Append(" </tr>"); 
       sb.Append(" </thead>"); 
       sb.Append(" <tbody>"); 

       foreach (var rows in data.Rows) 
       { 
        sb.Append("<tr>"); 
        foreach (var item in ((System.Data.DataRow)(rows)).ItemArray) 
        { 
         sb.Append("<td style=\"padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; border: 1px solid #dddddd; width: 125px\">" + item + "</td>"); 
        } 
        sb.Append("</tr>"); 
       } 

       //sb.Append("<td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>"); 

       //sb.Append(" <tr><td>This is a test</td><td>2/td><td>3</td><td>4</td><td>5</td><tr/>"); 
       //sb.Append(" <tr><td>This is a test</td><td>This is a test</td><td>This is a test</td><td>This is a test</td><td>This is a test</td><tr/>"); 
       sb.Append(" </tbody>"); 
       sb.Append(" </table>"); 

其次,我想从日期仅显示年和月,我如何检查foreach循环中,如果当前项目是 约会时间?

+0

需要看到你生成的HTML也..你的'sb'变量 –

+0

为什么你手工编码的HTML为了生成一个PDF使用itext?你为什么不使用itext PDFPTable类等? – Paddy

+0

@AnantDabhi我张贴它,但它会使问题太大 –

回答

0

我建议你在这种情况下使用iTextSharp.text.pdf.PdfPTable对象。 html表格似乎更简单一些,您可以使用iTextSharp.text.pdf.PdfPTable更快地完成您的需求。

+0

欢迎来到StackOverflow,霓虹灯。通过提供使用您建议的类的示例代码以及可能存在的任何文档或示例的链接,可以改进此答案。 –