• <menu id="w2i4a"></menu>
  • logo Aspose.PDF for .NET開發(fā)者使用教程

    文檔首頁(yè)>>Aspose.PDF for .NET開發(fā)者使用教程>>PDF轉(zhuǎn)換控件Aspose.PDF for .Net使用教程(十):添加和獲取超鏈接

    PDF轉(zhuǎn)換控件Aspose.PDF for .Net使用教程(十):添加和獲取超鏈接


    Aspose.PDF for .NET是一種高PDF處理和解析API,用于在跨平臺(tái)應(yīng)用程序中執(zhí)行文檔管理和操作任務(wù)。API可以輕松用于生成、修改、轉(zhuǎn)換、渲染、保護(hù)和打印PDF文檔,而無(wú)需使用Adobe Acrobat。此外,API還提供PDF壓縮選項(xiàng),表格創(chuàng)建和操作,圖形和圖像功能,廣泛的超鏈接功能,印章和水印任務(wù),擴(kuò)展的安全控制和自定義字體處理。

    【下載體驗(yàn)Aspose.PDF for .NET最新版】

    在接下來(lái)的系列教程中,將為開發(fā)者帶來(lái)Aspose.PDF for .NET的一系列使用教程,例如進(jìn)行文檔間的轉(zhuǎn)換,如何標(biāo)記PDF文件,如何使用表單和圖表等等。

    第三章:使用鏈接和操作

    ▲第二節(jié):添加和獲取超鏈接

    在PDF文件中添加超鏈接


    可以添加到PDF文件的超鏈接,以允許讀者導(dǎo)航到PDF的另一部分或外部?jī)?nèi)容。為了向PDF文檔添加Web超鏈接:

    1. 創(chuàng)建一個(gè)Document Class對(duì)象。
    2. 獲取要添加鏈接的頁(yè)面類。
    3. LinkAnnotation使用Page和Rectangle對(duì)象創(chuàng)建對(duì)象。矩形對(duì)象用于指定頁(yè)面上應(yīng)添加鏈接的位置。
    4. 將該Action屬性設(shè)置為GoToURIAction指定遠(yuǎn)程URI位置的對(duì)象。
    5. 要顯示超鏈接文本,請(qǐng)?jiān)谂cLinkAnnotation放置對(duì)象的位置類似的位置添加文本字符串。
    6. 添加自由文本
      1. 實(shí)例化一個(gè)FreeTextAnnotation對(duì)象。它還接受Page和Rectangle對(duì)象作為參數(shù),因此可以提供與LinkAnnotation構(gòu)造函數(shù)指定的相同的值。
      2. 使用FreeTextAnnotation對(duì)象的Contents屬性,指定應(yīng)在輸出PDF中顯示的字符串
      3. (可選)將兩個(gè)LinkAnnotation和FreeTextAnnotation對(duì)象的邊框?qū)挾仍O(shè)置為0,以便它們不會(huì)出現(xiàn)在PDF文檔中。
    7. 定義LinkAnnotation和FreeTextAnnotation對(duì)象后,將這些鏈接添加到Page對(duì)象的Annotations集合中。
    8. 使用Document對(duì)象的Save方法保存更新的PDF。

    以下代碼段顯示如何向PDF文件添加超鏈接:

    // 文檔目錄的路徑。
    string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
    
    //打開文檔
    Document document = new Document(dataDir + "AddHyperlink.pdf");
    //創(chuàng)建鏈接
    Page page = document.Pages[1];
    //創(chuàng)建鏈接注釋對(duì)象
    LinkAnnotation link = new LinkAnnotation(page, new Aspose.Pdf.Rectangle(100, 100, 300, 300));
    //為L(zhǎng)inkAnnotation創(chuàng)建邊框?qū)ο?Border border = new Border(link);
    // 將邊框?qū)挾戎翟O(shè)置為0
    border.Width = 0;
    //設(shè)置LinkAnnotation的邊框
    link.Border = border;
    //將鏈接類型指定為遠(yuǎn)程URI
    link.Action = new GoToURIAction("www.aspose.com");
    //將鏈接注釋添加到PDF文件第一頁(yè)的注釋集合中
    page.Annotations.Add(link);
    
    //創(chuàng)建自由文本注釋
    FreeTextAnnotation textAnnotation = new FreeTextAnnotation(document.Pages[1], new Aspose.Pdf.Rectangle(100, 100, 300, 300), new DefaultAppearance(Aspose.Pdf.Text.FontRepository.FindFont("TimesNewRoman"), 10, System.Drawing.Color.Blue));
    //要添加為自由文本的字符串
    textAnnotation.Contents = "Link to Aspose website";
    //設(shè)置自由文本注釋的邊框
    textAnnotation.Border = border;
    //將FreeText注釋添加到Document第一頁(yè)的注釋集合中
    document.Pages[1].Annotations.Add(textAnnotation);
    dataDir = dataDir + "AddHyperlink_out.pdf";
    // 保存更新的文檔
    document.Save(dataDir);


    創(chuàng)建相同PDF中頁(yè)面的超鏈接


    Aspose.PDF for .NET為PDF創(chuàng)建及其操作提供了很好的功能。它還提供了添加PDF頁(yè)面鏈接的功能,鏈接可以指向另一個(gè)PDF文件中的頁(yè)面,Web URL,啟動(dòng)應(yīng)用程序的鏈接,甚至鏈接到同一PDF文件中的頁(yè)面。為了添加本地超鏈接(指向同一PDF文件中的頁(yè)面的鏈接),將一個(gè)名為L(zhǎng)ocalHyperlink的類添加到Aspose.PDF命名空間,并且此類具有名為TargetPageNumber的屬性,該屬性用于指定超鏈接的目標(biāo)/目標(biāo)頁(yè)面。

    為了添加本地超鏈接,需要?jiǎng)?chuàng)建一個(gè)TextFragment,以便鏈接可以與TextFragment相關(guān)聯(lián)。該TextFragment類有一個(gè)屬性命名超鏈接,用來(lái)LocalHyperlink實(shí)例相關(guān)聯(lián)。以下代碼段顯示了完成此要求的步驟。

    //文檔目錄的路徑。
    string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
                
    //創(chuàng)建文檔實(shí)例
    Document doc = new Document();
    //將頁(yè)面添加到PDF文件的頁(yè)面集合中
    Page page = doc.Pages.Add();
    //創(chuàng)建文本片段實(shí)例
    Aspose.Pdf.Text.TextFragment text = new Aspose.Pdf.Text.TextFragment("link page number test to page 7");
    //創(chuàng)建本地超鏈接實(shí)例
    Aspose.Pdf.LocalHyperlink link = new Aspose.Pdf.LocalHyperlink();
    //設(shè)置鏈接實(shí)例的目標(biāo)頁(yè)面
    link.TargetPageNumber = 7;
    //設(shè)置TextFragment超鏈接
    text.Hyperlink = link;
    //將文本添加到Page的集合集合中
    page.Paragraphs.Add(text);
    // 創(chuàng)建新的TextFragment實(shí)例
    text = new TextFragment("link page number test to page 1");
    // 應(yīng)在新頁(yè)面上添加TextFragment
    text.IsInNewPage = true;
    // 創(chuàng)建另一個(gè)本地超鏈接實(shí)例
    link = new LocalHyperlink();
    //為第二個(gè)超鏈接設(shè)置目標(biāo)頁(yè)面
    link.TargetPageNumber = 1;
    // 設(shè)置第二個(gè)TextFragment的鏈接
    text.Hyperlink = link;
    //將文本添加到頁(yè)面對(duì)象的段落集合中
    page.Paragraphs.Add(text);    
    
    dataDir = dataDir + "CreateLocalHyperlink_out.pdf";
    //保存更新的文檔
    doc.Save(dataDir);


    從PDF文件中刪除文檔打開操作


    鏈接在PDF文件中表示為注釋,可以添加,更新或刪除它們。Aspose.PDF for .NET還支持在PDF文件中獲取超鏈接的目標(biāo)(URL)。要獲取鏈接的URL:

    1. 創(chuàng)建一個(gè)Document對(duì)象。
    2. 獲取Page您想要從中提取鏈接。
    3. 使用AnnotationSelector該類LinkAnnotation從指定頁(yè)面中提取所有對(duì)象。
    4. 將AnnotationSelector對(duì)象傳遞給Page對(duì)象的Accept()方法。
    5. IList使用AnnotationSelector對(duì)象的Selected屬性將所有選定的鏈接注釋添加到對(duì)象中。
    6. 提取LinkAnnotation Actionas GoToURIAction。

    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
    // Load the PDF file
    Document document = new Document(dataDir + "input.pdf");
    
    // Traverse through all the page of PDF
    foreach (Aspose.Pdf.Page page in document.Pages)
    {
        // Get the link annotations from particular page
        AnnotationSelector selector = new AnnotationSelector(new Aspose.Pdf.Annotations.LinkAnnotation(page, Aspose.Pdf.Rectangle.Trivial));
    
        page.Accept(selector);
        // Create list holding all the links
        IListlist = selector.Selected;
        // Iterate through invidiaul item inside list
        foreach (LinkAnnotation a in list)
        {
            // Print the destination URL
            Console.WriteLine("\nDestination: " + (a.Action as Aspose.Pdf.Annotations.GoToURIAction).URI + "\n");
        }

    獲取超鏈接文本

    超鏈接包含兩部分:文檔中顯示的文本和目標(biāo)URL。在某些情況下,它是文本而不是我們需要的URL。PDF文件中的文本和注釋/操作由不同的實(shí)體表示。頁(yè)面上的文本只是一組單詞和字符,而注釋帶來(lái)了一些交互性,例如超鏈接中固有的交互性。

    要查找URL內(nèi)容,您需要使用注釋和文本。該Annotation對(duì)象本身沒(méi)有文本,但位于頁(yè)面上的文本下。因此,要獲取文本,請(qǐng)Annotation提供URL的邊界,而Text對(duì)象則提供URL內(nèi)容。請(qǐng)參閱以下代碼段:

    //文檔目錄的路徑。
    string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
    //加載PDF文件
    Document document = new Document(dataDir + "input.pdf");
    // 遍歷PDF的每一頁(yè)
    foreach (Page page in document.Pages)
    {
        //顯示鏈接注釋
        ShowLinkAnnotations(page);
    }


    如何在查看文檔時(shí)指定PDF頁(yè)面


    在PDF查看器(如Adobe Reader)中查看PDF文件時(shí),文件通常會(huì)在第一頁(yè)上打開。但是,可以將文件設(shè)置為在其他頁(yè)面上打開。

    XYZExplicitDestination類允許你在要打開一個(gè)PDF文件中指定的頁(yè)面。將GoToAction對(duì)象值傳遞給Document類OpenAction屬性時(shí),文檔將在針對(duì)該XYZExplicitDestination對(duì)象指定的頁(yè)面處打開。以下代碼段顯示如何將頁(yè)面指定為文檔打開操作。

    //文檔目錄的路徑
    string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
    
    //加載PDF文件
    Document doc = new Document(dataDir + "SpecifyPageWhenViewing.pdf");
    //獲取文檔第二頁(yè)的實(shí)例
    Page page2 = doc.Pages[2];
    // 創(chuàng)建變量以設(shè)置目標(biāo)頁(yè)面的縮放系數(shù)
    double zoom = 1;
    //創(chuàng)建GoToAction實(shí)例
    GoToAction action = new GoToAction(doc.Pages[2]);
    //轉(zhuǎn)到2頁(yè)
    action.Destination = new XYZExplicitDestination(page2, 0, page2.Rect.Height, zoom);
    //設(shè)置文檔打開操作
    doc.OpenAction = action;
    //保存更新的文檔
    doc.Save(dataDir + "goto2page_out.pdf");

    *想要購(gòu)買Aspose.PDF for .NET正版授權(quán)的朋友可以聯(lián)系在線客服了解詳情哦~

    歡迎加入ASPOSE技術(shù)交流QQ群,各類資源及時(shí)分享,技術(shù)問(wèn)題交流討論!(掃描下方二維碼加入群聊)

    1560231367164.png

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();