【问题标题】:Add a hyperlink to paragraph using itextsharp使用 itextsharp 为段落添加超链接
【发布时间】:2018-01-23 13:56:17
【问题描述】:

我有一个段落要附加一个链接,通过执行以下操作,它会在底部显示另一个文本,而不是附加到现有文本的链接。

   Paragraph portfolioText = new Paragraph("View our Portfolio", new Font(Font.FontFamily.HELVETICA, 15, Font.NORMAL, iTextSharp.text.BaseColor.WHITE));
           portfolioText.Alignment = Element.ALIGN_CENTER;
  portfolioText.SetLeading(12.1f, 12.1f);
            portfolioText.IndentationLeft = 90;


            Anchor portAnch = new Anchor(portfolioText);
            portAnch.Reference = "http://portfolio.xxxxx.com/";
doc.Add(portfolioText);
doc.Add(portAnch);

[![在此处输入图片描述][1]][1]

更新:

我尝试用块代替:

Chunk portText = new Chunk("View Portfolio");
            portText.SetAnchor(new Uri("http://portfolio.xxxxx.com/"));
            Paragraph p = new Paragraph();
            p.Add(portText);
            doc.Add(p);

它有效,但我如何像上一段一样应用所有字体样式/大小和位置?

UPD 2

我试图给它这样的样式,但我什至在页面上都看不到它

 Chunk portText = new Chunk("View Portfolio");
            portText.SetAnchor(new Uri("http://portfolio.xxxx.com/"));
            Paragraph p = new Paragraph();
            p.Alignment = Element.ALIGN_CENTER;
            p.Font = new Font(Font.FontFamily.HELVETICA, 15, Font.NORMAL, iTextSharp.text.BaseColor.WHITE);
            p.SetLeading(12.1f, 12.1f);
            p.IndentationLeft = 90;
            p.Add(portText);    

【问题讨论】:

    标签: c# asp.net-mvc itext


    【解决方案1】:

    您上面的示例代码包含所有单独 工作部分来做你想做的事,只是没有以正确的方式放在一起。这是一个简单的工作示例(像您一样使用 iTextSharp 5.5.12):

    // [1] create a Chunk with font and colors you want
    var anchor = new Chunk("View our Portfolio")
    {
        Font = new Font(
            Font.FontFamily.HELVETICA, 25,
            Font.NORMAL,
            BaseColor.BLUE
        )
    };
    
    // [2] set the anchor URL
    anchor.SetAnchor("http://portfolio.xxxxx.com/");
    
    // [3] create a Paragraph with alignment, indentation, etc
    Paragraph p = new Paragraph()
    {
        Alignment = Element.ALIGN_CENTER,
        IndentationLeft = 90
    };
    p.SetLeading(12.1f, 12.1f);
    
    // [4] add chunk to Paragraph
    p.Add(anchor);
    
    // [5] add Paragraph to Document
    document.Add(p);
    

    结果 PDF:

    【讨论】:

      【解决方案2】:

      您的问题直接来自“积木”教程的第 6 章。

      https://developers.itextpdf.com/content/itext-7-building-blocks/chapter-6-creating-actions-destinations-and-bookmarks

      带有命名操作的示例:

      Paragraph p = new Paragraph()
      .add("Go to last page")
      .setAction(PdfAction.createNamed(PdfName.LastPage));
      document.add(p);
      
      p = new Paragraph()
      .add("Go to first page")
      .setAction(PdfAction.createNamed(PdfName.FirstPage));
      document.add(p);
      

      GoTo 操作示例:

      new Paragraph()
          .addTabStops(tabstops)
          .add(entry.getKey())
          .add(new Tab())
          .add(String.valueOf(entry.getValue()))
          .setAction(PdfAction.createGoTo(
                  PdfExplicitDestination.createFit(entry.getValue())));
      

      其中entry 是来自Map<String, Integer 的条目

      适用于您的用例的 iText7 代码是

      PdfDocument pdfDocument = new PdfDocument(new PdfWriter(PATH_TO_OUTPUT_FILE));
      Document layoutDocument = new Document(pdfDocument);
      
      Paragraph portfolioText = new Paragraph("View our Portfolio");
      portfolioText.setFont(PdfFontFactory.createFont());
      portfolioText.setFontColor(Color.ORANGE);
      portfolioText.setFixedLeading(12.1f);
      portfolioText.setFirstLineIndent(90f);
      portfolioText.setAction(PdfAction.createURI("http://google.com/"));
      
      layoutDocument.add(portfolioText);
      layoutDocument.close();
      

      【讨论】:

      • 你能把更改放在我现有的 sn-p 中吗?我尝试使用portfolioText.Add("http://portfolio.xxxxx.com/");,但它显示了链接
      • 当然会这样。 Paragraph 上的add 方法用于添加文本。如果您查看我给您的示例(以及我链接到的示例),您会发现我调用了方法setAction
      • 我尝试添加portfolioText.setAction但没有抛出这样的方法错误
      • 您使用的是哪个版本的 iText?
      • 我正在使用 iTextsharp 5.5.12.0
      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2015-03-27
      • 1970-01-01
      • 2012-08-31
      • 2015-09-15
      相关资源
      最近更新 更多