使用html解码导出为pdf

问题描述 投票:-1回答:1

我想用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标记,我不希望这样。

html asp.net pdf gridview itext
1个回答
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方法不会删除标签。它确保字符串中的实体(类似于&的东西)转换为可读内容。因此,您在PDF中看到标记是正常的。

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

© www.soinside.com 2019 - 2024. All rights reserved.