zoukankan      html  css  js  c++  java
  • 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

    本文完

    转载请注明出处。

  • 相关阅读:
    使用proguard导出项目时 报错
    一个有关canvas的Bug
    一点小想法
    C#调用非托管代码(转)
    对3DES加密的运用的一个简单示例(转)
    使用X.509数字证书加密解密实务(二) 使用RSA证书加密敏感数据(转)
    dtree用法(转)
    使用X.509数字证书加密解密实务(一) 证书的获得和管理(转)
    Oracle SQL Loader的详细语法(转)
    使用X.509数字证书加密解密实务(三) 使用RSA证书结合对称加密技术加密长数据(转)
  • 原文地址:https://www.cnblogs.com/Yesi/p/9953100.html
Copyright © 2011-2022 走看看