手记

C# 操作PDF书签——插入、编辑、删除、读取书签

概述

在PDF中,书签作为一种导航的有效工具,能帮助我们快速地定位到文档中的指定段落。同时,书签也能让读者对文档结构一目了然,在某种程度上也可作为目录使用。下面的示例中将介绍通过C#编程来操作PDF书签的方法。示例要点包括以下内容:

  • 插入书签到PDF

  • 编辑已有的PDF书签

  • 删除PDF书签

  • 读取PDF书签

  • 设置书签折叠/展开

 

工具

:下载安装该类库后,在程序中注意添加引用Bin文件夹下的Spire.Pdf.dll到程序(如下图),


示例代码(供参考)

【示例1】插入书签到PDF

using System;
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Bookmarks;
using Spire.Pdf.General; 
namespace AddBookmark1_PDF
{  
   class Program 
      {    
          static void Main(string[] args)    
              {            
              //实例化PdfDocument类,加载测试文档            
              PdfDocument pdf = new PdfDocument();            
              pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");             
              
              //遍历PDF文档所有页            
              for (int i = 0; i < pdf.Pages.Count; i++)          
                {              
                  //添加书签到页面指定位置                
                  PdfBookmark bookmark = pdf.Bookmarks.Add(string.Format("Chaper{0}", i + 1));                
                  bookmark.Destination = new PdfDestination(pdf.Pages[i]);                
                  bookmark.Destination.Location = new PointF(0, 2);                 
                  
                  //设置书签字体粗细、颜色                
                  bookmark.DisplayStyle = PdfTextStyle.Bold;                
                  bookmark.Color = Color.Black;            
                 }             
                 
                 //保存并打开文档            
                 pdf.SaveToFile("Bookmark1.pdf");            
                 System.Diagnostics.Process.Start("Bookmark1.pdf");       
               }    
         }
   }

书签添加效果:

【示例2】编辑已有的PDF书签

using System;
using Spire.Pdf;
using Spire.Pdf.Bookmarks;
using Spire.Pdf.General;
using System.Drawing; 
namespace ModifyBookmark_PDF
{  
  class Program 
    {      
       static void Main(string[] args)      
         {            
         //初始化PdfDocument类,加载测试文档            
         PdfDocument pdf = new PdfDocument();            
         pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Bookmark.pdf");             
         
         //获取第一个书签            
         PdfBookmarkCollection bookmarks = pdf.Bookmarks;            
         PdfBookmark childbookmark = bookmarks[0];             
         
         //修改指定页中的书签,包括书签字体粗细、颜色、书签文本等            
         childbookmark.Destination = new PdfDestination(pdf.Pages[1]);            
         childbookmark.DisplayStyle = PdfTextStyle.Bold;            
         childbookmark.Color = Color.Brown;            
         childbookmark.Title = "CHAPER Ⅰ";             
         
         //保存文档并打开            
         pdf.SaveToFile("ModifyBookmark.pdf");            
         System.Diagnostics.Process.Start("ModifyBookmark.pdf");     
        }    
     }
 }


【示例3】删除PDF书签

using System;
using Spire.Pdf;
using Spire.Pdf.Bookmarks;  
namespace RemoveBookmark_PDF
 {   
   class Program  
     {       
        static void Main(string[] args)     
           {            
           //加载文件            
           PdfDocument pdf = new PdfDocument();            
           pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Bookmark1.pdf");             
           
           //删除指定书签            
           PdfBookmarkCollection bookmarks = pdf.Bookmarks;            
           bookmarks.RemoveAt(0);             
           
           //保存并打开文档            
           pdf.SaveToFile("RemoveBookmark.pdf");            
           System.Diagnostics.Process.Start("RemoveBookmark.pdf");      
           }    
      }
 }


【示例4】读取PDF书签

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);               
              }            
           }      
       }    
   }
}

读取结果:


【示例5】设置书签折叠、展开

using Spire.Pdf;
namespace ExpandOrCollapseBookmark_PDF
 {   
    class Program   
      {        
         static void Main(string[] args)     
            {            
            //实例化PdfDocument类的对象,并加载PDF测试文档            
            PdfDocument doc = new PdfDocument();            
            doc.LoadFromFile("Bookmark.pdf");             
            
            //设置书签折叠/展开            
            doc.ViewerPreferences.BookMarkExpandOrCollapse = false;            
            //doc.ViewerPreferences.BookMarkExpandOrCollapse = true;             
            
            //保存文档并打开            
            doc.SaveToFile("result.pdf");            
            System.Diagnostics.Process.Start("result.pdf");       
          }    
      }
  }

以上是本次关于C#操作PDF书签的全部内容。

(本文完)


0人推荐
随时随地看视频
慕课网APP