Aspose.PDF for .NET使用教程:獲取、更新和擴展書籤

Aspose.PDF for .NET是一種高PDF處理和解析API,用於在跨平臺應用程序中執行文檔管理和操做任務。API能夠輕鬆用於生成、修改、轉換、渲染、保護和打印PDF文檔,而無需使用Adobe Acrobat。此外,API還提供PDF壓縮選項,表格建立和操做,圖形和圖像功能,普遍的超連接功能,印章和水印任務,擴展的安全控制和自定義字體處理。編程

【下載體驗Aspose.PDF for .NET最新版】安全

在接下來的系列教程中,將爲開發者帶來Aspose.PDF for .NET的一系列使用教程,例如進行文檔間的轉換,如何標記PDF文件,如何使用表單和圖表等等。字體

第二章:使用書籤

▲第二節:獲取、更新和展開書籤

從PDF文檔中獲取書籤

Document對象的OutlineCollection集合包含PDF文件的全部書籤。要獲取書籤,循環遍歷OutlineCollection集合並獲取OutlineItemCollection中的每一個書籤。OutlineItemCollection提供對全部書籤屬性的訪問。下面的代碼片斷向您展現瞭如何從PDF文件中獲取書籤。spa

//指向documents目錄的路徑。
string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks();

/ /打開文件
Document pdfDocument = new Document(dataDir + "GetBookmarks.pdf");

//循環遍歷全部書籤
foreach (OutlineItemCollection outlineItem in pdfDocument.Outlines)
{
    Console.WriteLine(outlineItem.Title);
    Console.WriteLine(outlineItem.Italic);
    Console.WriteLine(outlineItem.Bold);
    Console.WriteLine(outlineItem.Color);
}

 

獲取書籤的頁碼


一旦添加了書籤,就能夠經過獲取與bookmark對象關聯的目標PageNumber來查找它所在的頁面。對象

//文檔目錄的路徑。
string dataDir = RunExamples.GetDataDir_AsposePdf_Bookmarks();

//建立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文檔中獲取子書籤


書籤能夠按照層次結構組織父級和子級。要獲取全部書籤,請循環遍歷文檔對象的大綱集合。可是,要同時得到子書籤,還須要遍歷第一個循環中得到的每一個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");
       //還有子書籤循環經過它
        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編輯特定的書籤操做,並將縮放設置爲「繼承縮放」。這樣,不管用戶當前如何查看文檔,單擊書籤都不會改變他們的查看方式。」所以,須要在編輯書籤時以編程方式繼承zoom。索引

爲了指定繼承縮放,您應該使用0值,由於根據PDF規範,左邊、頂部或縮放的任何參數都應該使用null值,或者縮放指定該參數的當前值應該保持不變。縮放值0與null值具備相同的含義。下面的代碼片斷展現瞭如何更新PDF文檔中的書籤。ci

//文檔目錄的路徑。
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文件時擴展全部書籤。開發

爲了完成此要求,咱們能夠將每一個大綱/書籤項的打開狀態設置爲「打開」。如下代碼段顯示如何爲PDF文檔中展開的每一個書籤設置打開狀態。

//文檔目錄的路徑。
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)
{
    //設置大綱項目的打開狀態
    item.Open = true;
}

dataDir = dataDir + "ExpandBookmarks_out.pdf";
//保存輸出
doc.Save(dataDir);
相關文章
相關標籤/搜索