【发布时间】:2014-03-28 11:17:00
【问题描述】:
我正在使用 ITextSharp 生成 PDF,我正在 pdf 文档中生成 HTML 表格,但它在 PDF 文件中无法正确显示。我已经复制了生成的 HTML 并签入了一个 HTML 文件,它在 HTML 文件中正确显示
这是我在 HTML 文件中的 HTML
这是我收到的 PDF 文件
这是我的代码
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 以便使用 itext 生成 PDF?为什么不直接使用 itext PDFPTable 类等?
-
@AnantDabhi 我正在发布它,但它会使问题太大
-
也就是说,你可能想看看这个:mikesdotnetting.com/Article/205/…
-
ok.. nop .. 但您似乎需要使用
inline css因为它不支持外部 css
标签: c# asp.net itextsharp