2017-08-09 38 views
0

如何在PDF中將純文本鏈接到PDF文檔的另一部分? 目前,我正在處理PDF。如果在頁面中找到兩個數字(文本對象),我已經確定了兩個應該鏈接到對方的頁面。使文本成爲鏈接/註釋以調用goTo PDF中的其他頁面操作

有沒有辦法將該文本轉換爲可點擊的本地鏈接?

+0

文字本身是無關的,你需要的是周圍的文本框的座標。你用什麼庫來做你的PDF後期處理? –

+0

文本週圍框的座標似乎不是syncfusion提供的文本提取的一部分。 –

+0

@PatrickGallot它是syncfusion。有可能使用不同的lib? – user1093111

回答

1

我們已檢查報告的查詢「使文本成爲鏈接/註釋以調用PDF中的其他頁面操作」,並準備了測試樣本以滿足您的要求。在本示例中,我們使用PdfDocumentLinkAnnotation通過單擊文本來導航內部文檔。請檢查樣本,並在下面的鏈接中提供,供您參考。

請從the following link找到樣品。

請查閱以下UG documentation link以瞭解有關PdfDocumentLinkAnnotation的更多詳情。

守則鏈接:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Diagnostics; 
using System.Drawing; 
using System.Drawing.Imaging; 

using Syncfusion.Pdf; 
using Syncfusion.Pdf.Graphics; 
using Syncfusion.Pdf.Interactive; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     public static string DataPathOutput 
     { 
      get 
      { 
       if (!Directory.Exists(System.Environment.CurrentDirectory + @"\..\..\Output\")) 
        Directory.CreateDirectory(System.Environment.CurrentDirectory + @"\..\..\Output\"); 
       return System.Environment.CurrentDirectory + @"\..\..\Output\"; 
      } 
     } 

     static void Main(string[] args) 
     { 
      // Creates a new PDF document 
      PdfDocument document = new PdfDocument(); 

      // Creates a first page 
      PdfPage firstPage = document.Pages.Add(); 

      PdfFont font = new PdfStandardFont(PdfFontFamily.Courier, 12f); 
      PdfBrush brush = PdfBrushes.Black; 
      PdfGraphics graphics1 = firstPage.Graphics; 

      string inputText1 = "Sample Text-1"; 
      graphics1.DrawString(inputText1, font, brush, 10, 40); 

      // Measure string size to use same size for annotation 
      SizeF size1 = font.MeasureString(inputText1); 
      RectangleF rectangle1 = new RectangleF(10, 40, size1.Width, size1.Height); 

      // Creates a second page 
      PdfPage secondPage = document.Pages.Add(); 
      PdfGraphics graphics2 = secondPage.Graphics; 

      string secondPageInput = "Sample Text-2"; 
      graphics2.DrawString(secondPageInput, font, brush, 10, 40); 

      // Measure string size to use same size for annotation 
      SizeF size2 = font.MeasureString(inputText1); 
      RectangleF rectangle2 = new RectangleF(10, 40, size2.Width, size2.Height); 

      // Add annotation for firstpage to link second page of PdfDocumet 
      PdfDocumentLinkAnnotation firstAnnotation = new PdfDocumentLinkAnnotation(rectangle1); 
      firstAnnotation.Color = new PdfColor(Color.Transparent); 
      firstAnnotation.Destination = new PdfDestination(secondPage); 
      // Use below comment for link specific part of page 
      //firstAnnotation.Destination.Location = new Point(10, 40); 
      firstPage.Annotations.Add(firstAnnotation); 

      // Add annotation for second page to link first page of PdfDocumet 
      PdfDocumentLinkAnnotation secondAnnotation = new PdfDocumentLinkAnnotation(rectangle2); 
      secondAnnotation.Color = new PdfColor(Color.Transparent); 
      secondAnnotation.Destination = new PdfDestination(firstPage); 
      // Use below comment for link specific part of page 
      //secondAnnotation.Destination.Location = new Point(10, 40); 
      secondPage.Annotations.Add(secondAnnotation); 

      // Save document on mentioned location 
      document.Save(System.IO.Path.Combine(DataPathOutput, "Output.pdf")); 
      document.Close(true); 
     } 
    } 
} 
+0

哇。非常感謝 – user1093111

+0

鏈接最終會腐爛,你可以總結一下你的答案中的內容嗎? –

+0

@PaulH添加了代碼。 – user1093111

相關問題