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

 

本文完

轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM