1. 程式人生 > >C# 讀取PDF多級書籤

C# 讀取PDF多級書籤

在PDF中,書籤作為一種導航的有效工具,能幫助我們快速地定位到文件中的指定段落。同時,書籤也能讓人對文件結構一目瞭然,在某種程度上也可作為目錄使用。對於C#操作PDF中的書籤,在上一篇文章中介紹了具體的如何新增書籤、修改已有書籤以及刪除書籤的操作,在本篇文章中,將介紹C#如何讀取PDF中的多級書籤。

工具

下載安裝該類庫後,注意在編輯程式碼時,在程式中新增引用Spire.Pdf.dll(如下圖),dll檔案可在安裝路徑下的Bin資料夾中獲取。

示例程式碼(供參考)

源文件:

步驟1 :載入文件

PdfDocument doc = new PdfDocument();
doc.LoadFromFile(
"test.pdf");

步驟2 :獲取文件中的書籤(這裡需要自定義方法來獲取文件中的所有書籤內容)

//獲取文件的書籤
PdfBookmarkCollection bookmarks = doc.Bookmarks;
//宣告一個可變字串
StringBuilder stringbuilder = new StringBuilder();
//獲取父書籤和子書籤
GetBookmarkTitle(bookmarks, stringbuilder);

自定義方法:

//自定義方法獲取書籤
 static void GetBookmarkTitle(PdfBookmarkCollection bookmarks, StringBuilder stringbuilder)
 {
     
//遍歷書籤 if (bookmarks.Count > 0) { foreach (PdfBookmark parentBookmark in bookmarks) { stringbuilder.AppendLine(parentBookmark.Title); //獲取書籤 GetBookmarkTitle(parentBookmark, stringbuilder); } } }

步驟 3 :將書籤寫入到.txt文件

String fileName = "
output.txt"; File.WriteAllText(fileName, stringbuilder.ToString());

完成程式碼後,除錯程式,生成文件。下圖是讀取結果:

全部程式碼

using Spire.Pdf;
using Spire.Pdf.Bookmarks;
using System;
using System.IO;
using System.Text;


namespace ReadBookmark_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //例項化PdfDocument類的物件,並載入含有多級書籤的PDF檔案
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("test.pdf");

            //獲取文件的書籤
            PdfBookmarkCollection bookmarks = doc.Bookmarks;
            //宣告一個可變字串
            StringBuilder stringbuilder = new StringBuilder();
            //獲取父書籤和子書籤
            GetBookmarkTitle(bookmarks, stringbuilder);

            //宣告txt檔案,並將獲得的多級書籤寫入到檔案.txt
            String fileName = "output.txt";
            File.WriteAllText(fileName, stringbuilder.ToString());

        }

        //自定義方法獲取書籤
        static void GetBookmarkTitle(PdfBookmarkCollection bookmarks, StringBuilder stringbuilder)
        {
            //遍歷書籤
            if (bookmarks.Count > 0)
            {
                foreach (PdfBookmark parentBookmark in bookmarks)
                {
                    stringbuilder.AppendLine(parentBookmark.Title);
                    //獲取書籤
                    GetBookmarkTitle(parentBookmark, stringbuilder);
                }
            }
        }
    }
}
View Code

本文完

轉載請註明出處。