Aspose.PDF for .NET使用教程(三):獲取、更新和擴展書簽
Aspose.PDF for .NET是一種高PDF處理和解析API,用于在跨平臺應用程序中執(zhí)行文檔管理和操作任務。API可以輕松用于生成、修改、轉(zhuǎn)換、渲染、保護和打印PDF文檔,而無需使用Adobe Acrobat。此外,API還提供PDF壓縮選項,表格創(chuàng)建和操作,圖形和圖像功能,廣泛的超鏈接功能,印章和水印任務,擴展的安全控制和自定義字體處理。
在接下來的系列教程中,將為開發(fā)者帶來Aspose.PDF for .NET的一系列使用教程,例如進行文檔間的轉(zhuǎn)換,如何標記PDF文件,如何使用表單和圖表等等。
第二章:使用書簽
▲第二節(jié):獲取、更新和展開書簽
從PDF文檔中獲取書簽
Document對象的OutlineCollection集合包含PDF文件的所有書簽。要獲取書簽,循環(huán)遍歷OutlineCollection集合并獲取OutlineItemCollection中的每個書簽。OutlineItemCollection提供對所有書簽屬性的訪問。下面的代碼片段向您展示了如何從PDF文件中獲取書簽。
//指向documents目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); / /打開文件 Document pdfDocument = new Document(dataDir + "GetBookmarks.pdf"); //循環(huán)遍歷所有書簽 foreach (OutlineItemCollection outlineItem in pdfDocument.Outlines) { Console.WriteLine(outlineItem.Title); Console.WriteLine(outlineItem.Italic); Console.WriteLine(outlineItem.Bold); Console.WriteLine(outlineItem.Color); }
獲取書簽的頁碼
一旦添加了書簽,就可以通過獲取與bookmark對象關聯(lián)的目標PageNumber來查找它所在的頁面。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); //創(chuàng)建PdfBookmarkEditor PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor(); //打開PDF文件 bookmarkEditor.BindPdf(dataDir + "GetBookmarks.pdf"); //提取書簽 Aspose.Pdf.Facades.Bookmarks bookmarks = bookmarkEditor.ExtractBookmarks(); foreach (Aspose.Pdf.Facades.Bookmark bookmark in bookmarks) { string strLevelSeprator = string.Empty; for (int i = 1; i < bookmark.Level; i++) { strLevelSeprator += "----"; } Console.WriteLine("{0}Title: {1}", strLevelSeprator, bookmark.Title); Console.WriteLine("{0}Page Number: {1}", strLevelSeprator, bookmark.PageNumber); Console.WriteLine("{0}Page Action: {1}", strLevelSeprator, bookmark.Action); }
從PDF文檔中獲取子書簽
書簽可以按照層次結(jié)構組織父級和子級。要獲取所有書簽,請循環(huán)遍歷文檔對象的大綱集合。但是,要同時獲得子書簽,還需要遍歷第一個循環(huán)中獲得的每個OutlineItemCollection對象中的所有書簽。下面的代碼片段展示了如何從PDF文檔獲取子書簽。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); //打開文檔 Document pdfDocument = new Document(dataDir + "GetChildBookmarks.pdf"); //遍歷所有書簽 foreach (OutlineItemCollection outlineItem in pdfDocument.Outlines) { Console.WriteLine(outlineItem.Title); Console.WriteLine(outlineItem.Italic); Console.WriteLine(outlineItem.Bold); Console.WriteLine(outlineItem.Color); if (outlineItem.Count > 0) { Console.WriteLine("Child Bookmarks"); //還有子書簽循環(huán)通過它 foreach (OutlineItemCollection childOutline in outlineItem) { Console.WriteLine(childOutline.Title); Console.WriteLine(childOutline.Italic); Console.WriteLine(childOutline.Bold); Console.WriteLine(childOutline.Color); } } }
更新PDF文檔中的書簽
要更新PDF文件中的書簽,首先通過指定書簽的索引從Document對象的OutlineColletion集合中獲取特定書簽。將書簽檢索到OutlineItemCollection對象后,可以更新其屬性,然后使用該Save方法保存更新的PDF文件。以下代碼段顯示如何更新PDF文檔中的書簽。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); //打開文檔 Document pdfDocument = new Document(dataDir + "UpdateBookmarks.pdf"); //獲取書簽對象 OutlineItemCollection pdfOutline = pdfDocument.Outlines[1]; pdfOutline.Title = "Updated Outline"; pdfOutline.Italic = true; pdfOutline.Bold = true; dataDir = dataDir + "UpdateBookmarks_out.pdf"; //保存輸出 pdfDocument.Save(dataDir);
編輯書簽時繼承縮放
單擊書簽(使用Aspose生成)時的默認縮放操作是適應頁面寬度。不過,我們可以使用Acrobat編輯特定的書簽操作,并將縮放設置為“繼承縮放”。這樣,無論用戶當前如何查看文檔,單擊書簽都不會改變他們的查看方式?!币虼耍枰诰庉嫊灂r以編程方式繼承zoom。
為了指定繼承縮放,您應該使用0值,因為根據(jù)PDF規(guī)范,左邊、頂部或縮放的任何參數(shù)都應該使用null值,或者縮放指定該參數(shù)的當前值應該保持不變??s放值0與null值具有相同的含義。下面的代碼片段展示了如何更新PDF文檔中的書簽。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); //打開文檔 Document doc = new Document(dataDir + "input.pdf"); //獲取PDF文件的大綱/書簽集合 OutlineItemCollection item = new OutlineItemCollection(doc.Outlines); //將縮放級別設置為0 XYZExplicitDestination dest = new XYZExplicitDestination(2, 100, 100, 0); //添加XYZExplicitDestination作為動作以概述PDF的集合 item.Action = new GoToAction(dest); //添加項目以概述PDF文件的集合 doc.Outlines.Add(item); dataDir = dataDir + "InheritZoom_out.pdf"; //保存輸出 doc.Save(dataDir);
查看文檔時擴展書簽
書簽保存在Document對象的OutlineItemCollection集合中,本身在OutlineCollection集合中。但是,我們可能要求在查看PDF文件時擴展所有書簽。
為了完成此要求,我們可以將每個大綱/書簽項的打開狀態(tài)設置為“打開”。以下代碼段顯示如何為PDF文檔中展開的每個書簽設置打開狀態(tài)。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks(); //打開文檔 Document doc = new Document(dataDir + "input.pdf"); //設置頁面查看模式,即顯示縮略圖,全屏,顯示附件面板 doc.PageMode = PageMode.UseOutlines; //遍歷PDF文件的輪廓集合中的每個Ouline項目 foreach (OutlineItemCollection item in doc.Outlines) { //設置大綱項目的打開狀態(tài) item.Open = true; } dataDir = dataDir + "ExpandBookmarks_out.pdf"; //保存輸出 doc.Save(dataDir);
-- 未完待續(xù) --
*想要購買Aspose.PDF for .NET正版授權的朋友可以聯(lián)系在線客服了解詳情哦~
歡迎加入ASPOSE技術交流QQ群,各類資源及時分享,技術問題交流討論!(掃描下方二維碼加入群聊)