• 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

    本文完

    转载请注明出处。

  • 相关阅读:
    webpack基本使用
    vue-路由-显示名称
    vue-父组件和路由
    vue-路由
    vue-父子组件和ref
    vue-组件
    go-面向对象编程(上)
    JavaScript的历史
    vue-列表动画
    钩子函数实现小球弹落
  • 原文地址:https://www.cnblogs.com/Yesi/p/9953100.html
Copyright © 2020-2023  润新知