C# 添加、修改和刪除PDF書(shū)簽的實(shí)例代碼
有時(shí)候我們?cè)陂喿xPDF文檔時(shí)會(huì)遇到這樣一種情況:PDF文檔頁(yè)數(shù)比較多,但是又沒(méi)有書(shū)簽,所以我們不能根據(jù)書(shū)簽快速了解文檔所講解的內(nèi)容,也不能點(diǎn)擊書(shū)簽快速跳轉(zhuǎn)到相應(yīng)的位置,而只能一頁(yè)一頁(yè)的翻閱,非??鄲?。相信開(kāi)發(fā)人員在開(kāi)發(fā)和PDF有關(guān)的應(yīng)用程序時(shí),也會(huì)有這樣的功能需求,因此在這篇文章中我就介紹一下如何使用編程的方式(C#)和Spire.PDF組件給PDF文檔添加書(shū)簽(包括添加書(shū)簽到現(xiàn)有文檔和添加子書(shū)簽),以及修改和刪除現(xiàn)有PDF文檔中的指定書(shū)簽。
Spire.PDF組件概述
Spire.PDF是一個(gè)專(zhuān)業(yè)的PDF組件,用于在.NET應(yīng)用程序中創(chuàng)建,編輯,處理和閱讀PDF文檔。支持豐富的PDF文檔處理操作,如PDF文檔合并/拆分、轉(zhuǎn)換(如HTML轉(zhuǎn)PDF,PDF轉(zhuǎn)圖片等)、打印(包括靜默打?。?、壓縮、添加/修改/刪除書(shū)簽、添加注釋、安全設(shè)置(包括數(shù)字簽名)、創(chuàng)建與填充域、圖片插入與提取、文本提取與高亮等。它不依賴(lài)Adobe Acrobat,因此運(yùn)行環(huán)境無(wú)需安裝Adobe Reader或其他類(lèi)似組件。 該組件分為商業(yè)版和免費(fèi)版(不是試用版)兩種,一般個(gè)人使用或者操作的PDF文檔不超過(guò)10頁(yè)時(shí),可以使用免費(fèi)版。
關(guān)于它的安裝,有很多種渠道,包括官網(wǎng)以及開(kāi)發(fā)者最喜歡和常用的NuGet方式。在Visual Studio的 NuGet Package Manager Console中輸入以下PowerShell命令回車(chē),組件的dll就會(huì)自動(dòng)地引用到項(xiàng)目中:
PM> Install-Package Spire.PDF
添加、修改和刪除PDF書(shū)簽的實(shí)現(xiàn)
一、添加書(shū)簽
1.1 添加書(shū)簽
在Spire.PDF中,每個(gè)PDF文檔都有一個(gè)書(shū)簽列表(PdfBookmarkCollection)。我們可以通過(guò)PdfDocument對(duì)象的Bookmarks屬性來(lái)獲取該列表,然后通過(guò)Add () 方法將書(shū)簽添加到列表中。
//新建PDF文檔 PdfDocument pdf = new PdfDocument(); //添加頁(yè)面 PdfPageBase page = pdf.Pages.Add(); //添加書(shū)簽 PdfBookmark bookmark = pdf.Bookmarks.Add("第一頁(yè)"); //設(shè)置書(shū)簽所指向的頁(yè)面和位置,(0,0)表示頁(yè)面的開(kāi)始位置 bookmark.Destination = new PdfDestination(page); bookmark.Destination.Location = new PointF(0, 0); //設(shè)置書(shū)簽的文本格式和顏色 bookmark.DisplayStyle = PdfTextStyle.Bold; bookmark.Color = Color.Black; //保存文檔 pdf.SaveToFile("Bookmark2.pdf");
1.2 添加子書(shū)簽
添加子書(shū)簽和添加普通書(shū)簽的方式基本一樣,不同的是普通書(shū)簽是直接添加到文檔的書(shū)簽列表里,而子書(shū)簽則是添加到父書(shū)簽的列表里。
//新建PDF文檔 PdfDocument pdf = new PdfDocument(); //添加頁(yè)面 PdfPageBase page = pdf.Pages.Add(); //添加書(shū)簽 PdfBookmark bookmark = pdf.Bookmarks.Add("第一章 熱傳導(dǎo)"); //設(shè)置書(shū)簽指向的頁(yè)面和位置 bookmark.Destination = new PdfDestination(page); bookmark.Destination.Location = new PointF(0, 0); //設(shè)置書(shū)簽的文本格式和顏色 bookmark.DisplayStyle = PdfTextStyle.Bold; bookmark.Color = Color.SeaGreen; //添加子書(shū)簽 PdfBookmark childBookmark = bookmark.Insert(0, "1.1 熱傳導(dǎo)基本知識(shí)"); //設(shè)置子書(shū)簽指向的頁(yè)面和位置 childBookmark.Destination = new PdfDestination(page); childBookmark.Destination.Location = new PointF(400, 300); //設(shè)置子書(shū)簽的文本格式和顏色 childBookmark.DisplayStyle = PdfTextStyle.Regular; childBookmark.Color = Color.Black; //保存文檔 pdf.SaveToFile("ChildBookmark.pdf");
1.3 添加書(shū)簽到現(xiàn)有文檔
除了在新建的PDF文檔里添加書(shū)簽,我們還可以給現(xiàn)有的PDF文檔添加書(shū)簽。加載PDF文檔的方法除LoadFromFile以外,還有LoadFromStream (從流加載),LoadFromHTML(從HTML加載)等,可根據(jù)自己的需求選擇相應(yīng)的加載方式。
//加載文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("示例.pdf"); for (int i = 0; i < pdf.Pages.Count; i++) { //添加書(shū)簽 PdfBookmark bookmark = pdf.Bookmarks.Add(string.Format("第{0}章", i+1)); //設(shè)置書(shū)簽指向的頁(yè)面和位置 bookmark.Destination = new PdfDestination(pdf.Pages[i]); bookmark.Destination.Location = new PointF(0, 0); //設(shè)置書(shū)簽的文本格式和顏色 bookmark.DisplayStyle = PdfTextStyle.Bold; bookmark.Color = Color.Black; } //保存文檔 pdf.SaveToFile("Bookmark2.pdf");
2. 修改書(shū)簽
Spire.PDF支持多種書(shū)簽修改方式,例如修改現(xiàn)有書(shū)簽的內(nèi)容,插入新書(shū)簽到現(xiàn)有書(shū)簽列表,插入子書(shū)簽到現(xiàn)有書(shū)簽等。這里我選取修改書(shū)簽內(nèi)容和插入新書(shū)簽到現(xiàn)有書(shū)簽列表進(jìn)行介紹。
2.1 修改現(xiàn)有書(shū)簽內(nèi)容
//加載文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Bookmark2.pdf"); //獲取書(shū)簽列表 PdfBookmarkCollection bookmarks = pdf.Bookmarks; //獲取第一個(gè)書(shū)簽 PdfBookmark bookmark = bookmarks[0]; //修改書(shū)簽指向的頁(yè)面 bookmark.Destination = new PdfDestination(document.Pages[1]); //修改書(shū)簽的文本格式和顏色 bookmark.DisplayStyle = PdfTextStyle.Bold; bookmark.Color = Color.Green; //修改書(shū)簽的title bookmark.Title = "修改"; //保存文檔 pdf.SaveToFile("ModifyBookmark.pdf");
2.2 插入新書(shū)簽到現(xiàn)有書(shū)簽列表
//加載文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Bookmark2.pdf"); //插入新書(shū)簽到指定位置(此處插入的是第三個(gè)書(shū)簽的位置) PdfBookmark bookmark = pdf.Bookmarks.Insert(2, "新增第三章"); //設(shè)置書(shū)簽所指向的頁(yè)面和位置 bookmark.Destination = new PdfDestination(document.Pages[1]); bookmark.Destination.Location = new PointF(0, 300); //保存文檔 pdf.SaveToFile("InsertBookmark.pdf");
3. 刪除書(shū)簽
刪除書(shū)簽時(shí),可以使用書(shū)簽的序號(hào),也可以使用書(shū)簽的名稱(chēng)。這里我使用的是序號(hào)的方式。
//加載文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Bookmark2.pdf"); //獲取書(shū)簽列表 PdfBookmarkCollection bookmarks = document.Bookmarks; //刪除第一個(gè)書(shū)簽 bookmarks.RemoveAt(0); //保存文檔 pdf.SaveToFile("DeleteBookmark.pdf");
以上博主只總結(jié)了部分操作PDF書(shū)簽的功能,如果需要詳細(xì)了解其他的功能,請(qǐng)查閱:http://e-iceblue.cn/Introduce/Spire-PDF-NET.html.希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)單線(xiàn)程異步互斥鎖的示例代碼
異步互斥鎖的作用是用于確保存在異步操作的上下文同步互斥,這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)單線(xiàn)程異步互斥鎖,文中的示例代碼講解詳細(xì),需要的可以參考下2024-01-01C#基于Socket實(shí)現(xiàn)簡(jiǎn)單聊天室功能
這篇文章主要為大家詳細(xì)介紹了C#基于Socket實(shí)現(xiàn)簡(jiǎn)單聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C#語(yǔ)法糖(Csharp Syntactic sugar)大匯總
首先需要聲明的是“語(yǔ)法糖”這個(gè)詞絕非貶義詞,它可以給我?guī)?lái)方便,是一種便捷的寫(xiě)法,編譯器會(huì)幫我們做轉(zhuǎn)換;而且可以提高開(kāi)發(fā)編碼的效率,在性能上也不會(huì)帶來(lái)?yè)p失。這讓java開(kāi)發(fā)人員羨慕不已,呵呵。2010-06-06C#實(shí)現(xiàn)通過(guò)ffmpeg從flv視頻文件中截圖的方法
這篇文章主要介紹了C#實(shí)現(xiàn)通過(guò)ffmpeg從flv視頻文件中截圖的方法,實(shí)例分析了C#使用ffmpeg操作flv文件的技巧,需要的朋友可以參考下2015-03-03C#實(shí)現(xiàn)的字符串相似度對(duì)比類(lèi)
這篇文章主要介紹了C#實(shí)現(xiàn)的字符串相似度對(duì)比類(lèi),本文直接給出類(lèi)實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-07-07C#中l(wèi)abel內(nèi)容顯示不全、不完整的解決方法
這篇文章主要介紹了C#中l(wèi)abel內(nèi)容顯示不全、不完整的解決方法,只需要把兩個(gè)屬性設(shè)置一下即可解決這個(gè)問(wèn)題,需要的朋友可以參考下2015-06-06ScriptControl控件執(zhí)行自定義VBS腳本示例分析
這篇文章主要介紹ScriptControl控件 msscript.ocx msscript.oca執(zhí)行自定義VBS腳本的示例代碼,需要的朋友可以參考下2013-04-04