我正在用ITextSharp生成PDF,我正在生成pdf文档中的HTML表格,但它不能正确显示在PDF文件中。我已经复制生成的HTML和在HTML文件中检查,其在HTML文件中正确显示它IText sharp PDF Writer不能正确显示HTML
这是我在一个HTML文件
这是我在PDF文件中获取HTML
这是我的代码
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循环中,如果当前项目是 约会时间?
需要看到你生成的HTML也..你的'sb'变量 –
为什么你手工编码的HTML为了生成一个PDF使用itext?你为什么不使用itext PDFPTable类等? – Paddy
@AnantDabhi我张贴它,但它会使问题太大 –