C#代碼實(shí)現(xiàn)將超鏈接插入到PDF的現(xiàn)有文本中
PDF 中的超鏈接是一項(xiàng)非常實(shí)用的功能,能夠讓讀者快速、便捷地訪問指定的網(wǎng)頁。通過在 PDF 文檔中添加超鏈接,可以為讀者提供更多補(bǔ)充信息,或引導(dǎo)他們前往相關(guān)的參考資源。當(dāng)讀者點(diǎn)擊超鏈接時(shí),對(duì)應(yīng)的網(wǎng)頁會(huì)立即在瀏覽器中打開。
本文將介紹如何使用 Spire.PDF for .NET,通過 .NET 程序?yàn)?PDF 文檔中的現(xiàn)有文本添加超鏈接。
安裝 Spire.PDF for .NET
首先,需要將 Spire.PDF for .NET 包中包含的 DLL 文件添加為 .NET 項(xiàng)目的引用。這些 DLL 文件可以通過鏈接直接下載,也可以通過 NuGet 進(jìn)行安裝。
PM> Install-Package Spire.PDF
使用 C#/VB.NET 在 PDF 現(xiàn)有文本上插入超鏈接
在 PDF 文檔中,超鏈接是以**注釋(Annotation)**的形式添加到頁面上的。要在 PDF 的已有文本上插入超鏈接,首先需要定位目標(biāo)文本;獲取其所在位置后,即可創(chuàng)建一個(gè)包含鏈接的 PdfUriAnnotation 對(duì)象,并將其添加到對(duì)應(yīng)位置。具體步驟如下:
- 創(chuàng)建 PdfDocument 對(duì)象,并使用
PdfDocument.LoadFromFile()方法加載 PDF 文件。 - 通過
PdfDocument.Pages屬性獲取第一頁。 - 創(chuàng)建 PdfTextFinder 對(duì)象,并通過
PdfTextFinder.Options.Parameter屬性設(shè)置查找選項(xiàng)。 - 使用
PdfTextFinder.Find()方法在頁面中查找指定文本,并獲取其第三次出現(xiàn)的位置。 - 遍歷該文本出現(xiàn)位置的文本邊界(由于被搜索的文本可能跨越多行,且可能包含多個(gè)邊界,查找到的文本邊界會(huì)以列表形式返回,以適應(yīng)這種情況)。
- 在對(duì)應(yīng)的文本邊界內(nèi)創(chuàng)建 PdfUriAnnotation 對(duì)象,并通過其屬性設(shè)置鏈接地址、邊框樣式和邊框顏色。
- 使用
PdfPageBase.AnnotationsWidget.Add(PdfUriAnnotation)方法將超鏈接添加到頁面注釋中。 - 調(diào)用
PdfDocument.SaveToFile()方法保存 PDF 文件。
具體示例代碼如下:
using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using System.Collections.Generic;
using System.Drawing;
using TextFindParameter = Spire.Pdf.Texts.TextFindParameter;
namespace ChangeHyperlink
{
internal class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 PdfDocument 類的對(duì)象
PdfDocument pdf = new PdfDocument();
// 加載 PDF 文件
pdf.LoadFromFile("Sample.pdf");
// 獲取第一頁
PdfPageBase page = pdf.Pages[0];
// 創(chuàng)建 PdfTextFinder 對(duì)象并設(shè)置查找選項(xiàng)
PdfTextFinder finder = new PdfTextFinder(page);
finder.Options.Parameter = TextFindParameter.IgnoreCase;
// 在頁面中查找指定文本,并獲取第三次出現(xiàn)的位置
List<PdfTextFragment> collection = finder.Find("climate change");
PdfTextFragment fragment = collection[2];
// 遍歷該文本出現(xiàn)位置的所有文本邊界
foreach (RectangleF bounds in fragment.Bounds)
{
// 創(chuàng)建一個(gè)超鏈接注釋
PdfUriAnnotation url = new PdfUriAnnotation(bounds);
// 設(shè)置超鏈接的 URL
url.Uri = "https://en.wikipedia.org/wiki/Climate_change";
// 設(shè)置超鏈接注釋的邊框
url.Border = new PdfAnnotationBorder(1f);
// 設(shè)置邊框顏色
url.Color = Color.Blue;
// 將超鏈接注釋添加到頁面中
page.Annotations.Add(url);
}
// 保存 PDF 文件
pdf.SaveToFile("AddHyperlinks.pdf");
pdf.Dispose();
}
}
}方法補(bǔ)充
C#插入超鏈接到PDF文檔的三種方法
1.鏈接到外部網(wǎng)頁
//創(chuàng)建PDF文檔并添加一頁
PdfDocument pdf = new PdfDocument();
PdfPageBase page =pdf.Pages.Add();
//定義坐標(biāo)變量并賦初值
float x = 10;
float y = 50;
//創(chuàng)建字體
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
//添加文本到頁面
string text = "更多詳情請(qǐng)?jiān)L問E-iceblue官方網(wǎng)站: ";
page.Canvas.DrawString(text, font1, PdfBrushes.Black, newPointF(x, y));
PdfStringFormat format = new PdfStringFormat();
format.MeasureTrailingSpaces = true;
x = x + font1.MeasureString(text, format).Width;
//創(chuàng)建字體
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Underline), true);
//創(chuàng)建PdfTextWebLink對(duì)象
PdfTextWebLink webLink = new PdfTextWebLink();
//設(shè)置超鏈接地址
webLink.Url = "https://www.e-iceblue.cn/";
//設(shè)置超鏈接文本
webLink.Text = "www.e-iceblue.cn";
//設(shè)置超鏈接字體和字體顏色
webLink.Font = font2;
webLink.Brush = PdfBrushes.Blue;
//添加超鏈接到頁面
webLink.DrawTextWebLink(page.Canvas, new PointF(x, y));
//保存文檔
pdf.SaveToFile("WebLink.pdf");2.鏈接到文檔內(nèi)部的指定頁面
//創(chuàng)建PDF文檔并添加兩頁
PdfDocument pdf = new PdfDocument();
PdfPageBase page1 =pdf.Pages.Add();
PdfPageBase page2 =pdf.Pages.Add();
//創(chuàng)建字體
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
//添加文本到頁面
page1.Canvas.DrawString("第一頁",font, PdfBrushes.Black, new PointF(20,20));
page2.Canvas.DrawString("第二頁",font, PdfBrushes.Black, new PointF(20,20));
string text = "跳轉(zhuǎn)到第二頁";
//創(chuàng)建RectangleF對(duì)象并添加文本
RectangleF rectangle = new RectangleF(20,80, 70, 20);
page1.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rectangle);
//創(chuàng)建PdfDocumentLinkAnnotation對(duì)象
PdfDocumentLinkAnnotation documentLink = new PdfDocumentLinkAnnotation(rectangle,new PdfDestination(page2));
//設(shè)置邊框顏色
documentLink.Color = Color.DarkSeaGreen;
//添加超鏈接到第一頁
page1.AnnotationsWidget.Add(documentLink);
//保存文檔
pdf.SaveToFile("InternalFileLink.pdf");3.鏈接到外部文檔
//創(chuàng)建PDF文檔并添加一頁
PdfDocument document = new PdfDocument();
PdfPageBase page =document.Pages.Add();
//創(chuàng)建字體
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
string text = "打開1.jpg";
//創(chuàng)建RectangleF對(duì)象并添加文本
RectangleF rectangle = new RectangleF(20,40, 80, 20);
page.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rectangle);
//創(chuàng)建PdfFileLinkAnnotation對(duì)象
PdfFileLinkAnnotation fileLink = new PdfFileLinkAnnotation(rectangle,@"1.jpg");
//設(shè)置超鏈接邊框顏色
fileLink.Color = Color.DarkSeaGreen;
//添加超鏈接到頁面
page.AnnotationsWidget.Add(fileLink);
//保存文檔
document.SaveToFile("ExternalFileLink.pdf");到此這篇關(guān)于C#代碼實(shí)現(xiàn)將超鏈接插入到PDF的現(xiàn)有文本中的文章就介紹到這了,更多相關(guān)C#超鏈接插入PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#解決多IfElse判斷語句和Switch語句問題的方法分享
這篇文章主要為大家介紹C#如何使用設(shè)計(jì)模式中的策略模式和委托來解決多個(gè)IfElse判斷語句和Switch語句,這種替換方式在其他語言也一樣可以做到,感興趣的可以了解一下2022-12-12
詳細(xì)聊聊C#的并發(fā)機(jī)制優(yōu)秀在哪
并發(fā)其實(shí)是一個(gè)很泛的概念,字面意思就是"同時(shí)做多件事",不過方式有所不同,下面這篇文章主要給大家介紹了關(guān)于C#并發(fā)機(jī)制的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
C#使用iTextSharp設(shè)置PDF所有頁面背景圖功能實(shí)例
這篇文章主要介紹了C#使用iTextSharp設(shè)置PDF所有頁面背景圖功能,實(shí)例分析了C#使用iTextSharp設(shè)置PDF頁面背景圖的實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

