当前位置: 首页 > 知识库问答 >
问题:

使用itextsharp导出为pdf时出现两次链接

戚星腾
2023-03-14

我的asp边界字段:

<asp:BoundField DataField = "SiteUrl" HtmlEncode="false" HeaderText = "Team Site URL" SortExpression = "SiteUrl" ></asp:BoundField>

我的代码

for (int i = 0; i < dtUIExport.Rows.Count; i++)
        {
            for (int j = 0; j < dtUIExport.Columns.Count; j++)
            {
                if (j == 1)
                { continue; }

                    string cellText = Server.HtmlDecode(dtUIExport.Rows[i][j].ToString());
                    //  cellText = Server.HtmlDecode((domainGridview.Rows[i][j].FindControl("link") as HyperLink).NavigateUrl);
                    // string cellText = Server.HtmlDecode((domainGridview.Rows[i].Cells[j].FindControl("hyperLinkId") as HyperLink).NavigateUrl);
                    iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL);
                    font.Color = new BaseColor(domainGridview.RowStyle.ForeColor);
                    iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new Phrase(12, cellText, font));

                    pdfTable.AddCell(cell);
            }
        }

domainGridview是网格名称。然而,我正在使用数据表操作pdf。超链接是这样来的

超文本传输协议://dtsp2010vm: 47707/站点/TS1

共有2个答案

穆承运
2023-03-14

我写这段代码是为了得到我的结果。谢谢布鲁诺的回答

for (int j = 0; j < dtUIExport.Columns.Count; j++)
            {
                if (j == 1)
                { continue; }
                if (j == 2)
                {
                    String cellTextLink = Server.HtmlDecode(dtUIExport.Rows[i][j].ToString());
                    cellTextLink = Regex.Replace(cellTextLink, @"<[^>]*>", String.Empty);                        
                    iTextSharp.text.Font fontLink = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL);
                    fontLink.Color = new BaseColor(domainGridview.RowStyle.ForeColor);
                    iTextSharp.text.pdf.PdfPCell cellLink = new iTextSharp.text.pdf.PdfPCell(new Phrase(12, cellTextLink, fontLink));

                    pdfTable.AddCell(cellLink);
                }
郏博瀚
2023-03-14

你最初的问题没有得到答案,因为它具有误导性。你声称链接来过两次,但那不是真的。从这个角度来看,链接显示为HTML语法:

<a href="http://stackoverflow.com">http://stackoverflow.com</a>

这是存储在cellText参数中的单个链接的HTML定义。

您正在将此内容添加到PdfPCell中,就像它是一个简单的字符串一样。iText会按原样呈现这个字符串,这并不奇怪。如果iText不显示以下内容,这将是一个严重的错误:

<a href="http://stackoverflow.com">http://stackoverflow.com</a>

如果希望呈现HTML,例如:http://stackoverflow.com,您需要将HTML解析为iText对象(例如

解析在PdfPCell中使用的超文本标记语言将在以下问题中解释:如何将富文本框(超文本标记语言)添加到表单元格中?

当你有<代码>

 类似资料:
  • 本文向大家介绍C#实现pdf导出 .Net导出pdf文件,包括了C#实现pdf导出 .Net导出pdf文件的使用技巧和注意事项,需要的朋友参考一下 最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码、可以成功的实现导出pdf文件。  在编码前需要在网上下载个itextsharp.dll,此程序集是必备的。楼主下载的是5.0版本,之前下了个5.4的似乎不好用。  下载之后直接添加

  • 我使用c#在Visual Studio中创建了一个WebApi服务器。客户端应用程序通过以下方式调用服务: 第一次就可以了。如果我再次尝试从客户端使用此服务,它将始终失败,并出现ServerProtocolViolation异常。 如果我再试一次,它再次正常工作。然后在第二次尝试时发生相同的错误。此外,当我尝试调用不同的方法时,第二个总是会崩溃。 这是例外: null 任何人想要一个主意都是我的错

  • 我是编程新手,我们从学校得到了一个例子来了解扫描仪是如何工作的。我的问题是,我不明白为什么消息“Input”(while循环中的System.out.println)会被打印两次。

  • 我正在为jasper reports使用I-report 5.5.0。我需要将印地语文本导出为PDF格式,但印地语部分正在转换为 。 我已经使用了字体扩展,但没有帮助: 字体名称:“lohit Devanagari” PDF嵌入:选中 PDF编码:Identity-H 我也尝试过其他印地语字体,但到目前为止没有任何效果。。

  • 问题内容: 在熊猫中为数据框生成PDF的有效方法是什么? 问题答案: 一种方法是使用markdown。您可以使用。这会将数据框转换为html表。从那里,您可以将生成的html放入markdown文件(.md)(请参阅http://daringfireball.net/projects/markdown/basics)。从那里开始,有一些实用程序可以将markdown转换为pdf(https://w

  • 问题内容: 我正在创建一种从文件写入和读取工作簿的方法,但是当我第二次调用此方法时。发生错误:org.apache.xmlbeans.impl.values.XmlValueDisconnectedException 问题答案: 同意Akokskis,编写两次导致问题的文件,但是您可以在编写之后尝试重新加载工作簿,这样便可以正常工作。例如