使用html解码导出为pdf

时间:2017-12-22 07:37:30

标签: html asp.net pdf gridview itext

我想用html标签将一列(从数据源,使用GridView)显示为PDF。 我想要解码HTML,以便在PDF中,它不会打印文字html标签。这是我的代码:

在GridView_RowDataBound事件中:

for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
        {

            for (int j = 0; j < 6; j++)
            {
                decodeHTML = HttpUtility.HtmlDecode(GridView1.Rows[i].Cells[j].Text);
                GridView1.Rows[i].Cells[j].Text = decodeHTML;
            }
        }
    }

然后将HTML解码的gridview添加到PDF单元格中:

    Phrase cellText = new Phrase(GridView1.Rows[i].Cells[j].Text, baseFontNormal);


    iTextSharp.text.pdf.PdfPCell cell = new PdfPCell(cellText);
    if (j == 3) cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
    table.AddCell(cell);

它不是以PDF格式显示数据,而是将它们显示在HTML页面中(在浏览器中)。但是,如果我删除 GridView_RowDataBound 事件,它将仅显示为PDF文件,但数据将打印文字html标签,我不希望这样。

1 个答案:

答案 0 :(得分:1)

您对HtmlDecode方法做出了错误的假设。您假设此方法可以解码HTML,例如<p>This is <i>italic</i> and this is <b>bold</b>!</p>类似于:

  

这是斜体,这是粗体

但事实并非如此。请查看MSDN上的API documentation

  

将已经过HTML编码的HTTP传输字符串转换为已解码的字符串。

这是什么意思?

这意味着您可以使用HtmlDecode转换字符串,如下所示:

&lt;p&gt;This is &lt;i&gt;italic&lt;/i&gt; and this is &lt;b&gt;bold&lt;/b&gt;!&lt;/p&gt;

进入这样的字符串:

<p>This is <i>italic</i> and this is <b>bold</b>!</p>

HtmlDecode方法删除标记。它确保字符串中的实体(像&amp;)之类的东西被转换为可读内容。因此,您可以在PDF中看到标记。

如果您有HTML内容,并且想要将其转换为iText对象,则需要一个加载项才能进行转换。请参阅Converting HTML to PDF using iText以了解如何执行此操作。