【问题标题】:IText sharp PDF Writer not display HTML correctlyITextsharp PDF Writer 无法正确显示 HTML
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 欢迎来到 StackOverflow,霓虹灯。通过包含使用您建议的类的示例代码以及指向可能存在的任何文档或示例的链接,可以改进此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2015-09-09
  • 2014-06-08
  • 1970-01-01
  • 2023-01-28
  • 2018-07-11
相关资源
最近更新 更多