当前位置: 首页 > news >正文

Python操作PDF书签详解 - 添加、修改、提取和删除

目录

简介

使用工具

Python 向 PDF 添加书签

添加书签

添加嵌套书签

Python 修改 PDF 书签

Python 展开或折叠 PDF 书签

Python 提取 PDF 书签

Python 删除 PDF 书签


简介

PDF 书签是 PDF 文件中的导航工具,通常包含一个标题和一个跳转位置(如指定的页面或位置)。它们可以像目录一样分层显示,用户可以展开或折叠这些书签,在文档中快速找到需要的内容。从技术上看,书签是 PDF 文件结构中的大纲对象,不会改变文档内容,只是帮助用户更方便地导航。

本教程将详细介绍如何使用 Python对 PDF 文件中的书签进行操作,包括添加、更新、提取和删除等。

Python 添加、修改、提取和删除PDF书签

    使用工具

    要在 Python 中操作 PDF 书签,需要一个合适的PDF处理库。本文所使用的库是Spire.PDF for Python,该库支持对 PDF 书签执行多种操作,包括:

    • 添加书签:为文档创建单层或嵌套书签,构建层次化导航。
    • 修改书签:更新书签的标题、目标页面、位置及显示样式。
    • 删除书签:清除不再需要的书签,保持文档整洁。
    • 提取书签:读取并输出文档中现有书签的信息。

    安装 Spire.PDF

    在开始操作 PDF 书签之前,请确保您的 Python 环境中已安装 Spire.PDF。可以通过以下pip命令进行安装:

    pip install spire.pdf

    安装完成后,即可在Python项目中导入并调用该库的相关API。

    Python 向 PDF 添加书签

    添加书签

    Spire.PDF提供了PdfDocument.Bookmarks.Add() 方法,用于为PDF文档添加书签。添加时,你可以自定义书签的跳转位置以及颜色和样式等属性。

    添加书签的主要步骤

    1. 加载 PDF 文档
      使用 PdfDocument 类打开已有的 PDF 文件。
    2. 添加书签
      调用 PdfDocument.Bookmarks.Add() 方法,将书签添加到文档的书签集合中。
    3. 设置书签跳转位置
      为书签设置目标跳转位置,例如目标页码、具体坐标位置以及缩放比例。
    4. 自定义书签(可选)
      通过设置书签的属性,如颜色(Color)和显示样式(DisplayStyle),来调整书签文字的颜色和字体样式。
    5. 保存修改后的 PDF 文档
      使用 PdfDocument.SaveToFile() 方法,将修改后的文档保存到文件。

    实现代码

    from spire.pdf import *# 打开 PDF 文件
    pdf = PdfDocument("测试.pdf")# 添加书签
    bookmark = pdf.Bookmarks.Add("第一章")# 设置书签的跳转位置为第一页左上角
    bookmark.Destination = PdfDestination(pdf.Pages[0], PointF(0.0, 0.0))# 自定义书签外观:设置颜色和样式
    bookmark.Color = PdfRGBColor(Color.get_Blue())
    bookmark.DisplayStyle = PdfTextStyle.Regular# 保存 PDF 文件
    pdf.SaveToFile("添加书签.pdf")
    pdf.Close()

    添加嵌套书签

    在 PDF 中,嵌套书签是一种具有层次结构的书签,允许用户以树状结构导航文档内容。它们类似于目录,其中某些书签可以包含子书签,这些子书签可以进一步包含子级,形成层次关系。

    嵌套书签的特点

    • 层次结构:父书签可以包含一个或多个子书签,子书签也可以有自己的子书签。
    • 内容导航:点击嵌套书签可以快速跳转到文档中相应的页面或特定位置。
    • 灵活性:嵌套书签可以指向 PDF 文档中的任何页面或位置。

    添加嵌套书签的主要步骤

    1. 加载 PDF 文档
      使用 PdfDocument 类打开 PDF 文件。
    2. 添加父书签
      调用 PdfDocument.Bookmarks.Add() 方法,将父书签添加到 PDF 文档的书签集合中。
    3. 设置父书签的跳转位置
      为父书签指定目标调整位置,例如目标页码、具体坐标和缩放比例。
    4.  自定义父书签(可选)
      通过属性(如 Color 和 DisplayStyle),自定义书签的外观,包括文本颜色和字体样式。
    5. 添加子书签
      调用 PdfBookmark.ConvertToBookmarkCollection().Add() 方法,在父书签下添加一个子书签。
    6. 设置子书签的跳转位置
      为子书签指定目标位置,例如目标页码、具体坐标和缩放比例。
    7. 自定义子书签(可选)
      使用 Color 和 DisplayStyle 属性,自定义嵌套书签的文本颜色和字体样式。
    8. 保存修改后的 PDF 文档
      调用 PdfDocument.SaveToFile() 方法,将修改后的 PDF 文档保存到文件中。

    实现代码

    from spire.pdf import *# 加载 PDF 文件
    pdf = PdfDocument("测试.pdf")# 添加父书签
    parent_bookmark = pdf.Bookmarks.Add("第一章")
    parent_bookmark.Destination = PdfDestination(pdf.Pages[0], PointF(0.0, 0.0))# 添加子书签
    child_bookmark = parent_bookmark.ConvertToBookmarkCollection().Add("1.1 简介")
    child_bookmark.Destination = PdfDestination(pdf.Pages[0], PointF(0.0, 20.0))# 保存 PDF 文件
    pdf.SaveToFile("添加嵌套书签.pdf")
    pdf.Close()
    

    Python 修改 PDF 书签

    当 PDF 文档内容发生变化时(如页面顺序更改或章节名称更新),书签也需要相应调整。

    修改 PDF 书签的主要步骤

    1. 加载 PDF 文档
      使用 PdfDocument 类打开包含书签的现有 PDF 文件。
    2. 访问目标书签
      通过索引定位要更新的书签,例如 PdfDocument.Bookmarks[0] 表示第一个书签。

    3. 修改书签属性
      使用书签的 Title 属性更改书签标题,并通过属性(如 Color)调整其外观。

    4. 保存修改后的 PDF 文档
      调用 PdfDocument.SaveToFile() 方法,保存更新后的 PDF 文件。

    实现代码

    from spire.pdf import *# 打开 PDF 文件
    pdf = PdfDocument("添加书签.pdf")# 获取第一个书签并更新标题和颜色
    bookmark = pdf.Bookmarks[0]
    bookmark.Title = "新书签"
    bookmark.Color = PdfRGBColor(Color.get_Red())# 保存 PDF 文件
    pdf.SaveToFile("修改书签.pdf")
    pdf.Close()
    

    Python 展开或折叠 PDF 书签

    在 PDF 文档中,书签可以设置为展开或折叠状态。这种方式可以控制嵌套书签在文档打开时的显示效果。

    展开或折叠书签的步骤

    实现代码

    1. 加载 PDF 文档
      使用 PdfDocument 类打开一个包含书签的现有 PDF 文件。

    2. 访问目标书签
      通过索引定位要更新的书签,例如 PdfDocument.Bookmarks[0] 表示第一个书签。

    3. 设置书签的展开或折叠状态
      使用书签的 ExpandBookmark 属性控制其显示状态:
      设置为 True 表示书签在打开 PDF 时自动展开。
      设置为 False 表示书签在打开 PDF 时保持折叠。

    4. 保存修改后的 PDF 文档
      调用 PdfDocument.SaveToFile() 方法,将更新后的 PDF 文档保存到指定位置。

    from spire.pdf import *# 打开 PDF 文件
    pdf = PdfDocument("添加嵌套书签.pdf")# 获取第一个书签并设置为折叠
    bookmark = pdf.Bookmarks[0]
    bookmark.ExpandBookmark = False# 保存 PDF 文件
    pdf.SaveToFile("折叠书签.pdf")
    pdf.Close()
    

    Python 提取 PDF 书签

    从 PDF 文件中提取书签可以帮助您审核文档结构、生成目录或将书签迁移到其他文档中。借助 Spire.PDF,您可以获取所有书签,包括父书签和子书签。

    提取 PDF 书签的主要步骤

    1. 定义递归函数遍历书签
      自定义一个函数,用于遍历 PdfBookmarkCollection 中的书签,打印每个书签的标题和页码,并递归处理嵌套书签。

    2. 加载 PDF 文档
      使用 PdfDocument 类打开包含书签的现有 PDF 文件。

    3. 调用函数以提取书签
      将 PDF 文档的书签集合传递给该函数,从文档中提取所有书签信息。

    实现代码

    from spire.pdf import *# 打开 PDF 文件
    pdf = PdfDocument("添加嵌套书签.pdf")# 递归函数:提取书签
    def extract_bookmarks(bookmarks, level=0):for i in range(bookmarks.Count):bookmark = bookmarks[i]print("  " * level + f"标题: {bookmark.Title}, 页码: {bookmark.Destination.PageNumber + 1}")if bookmark.ConvertToBookmarkCollection():extract_bookmarks(bookmark.ConvertToBookmarkCollection(), level + 1)extract_bookmarks(pdf.Bookmarks)
    pdf.Close()
    

    Python 删除 PDF 书签

    当你不再需要书签导航时,可以从PDF文档中删除书签。Spire.PDF 支持批量删除所有书签,也可以针对性地删除指定书签。

    删除 PDF 书签的步骤

    1. 加载 PDF 文档
      使用 PdfDocument 类打开一个包含书签的现有 PDF 文件。

    2. 删除特定书签
      使用 PdfDocument.Bookmarks.RemoveAt(index) 方法删除指定的书签。

    3. 删除所有书签(可选)
      如果希望一次性删除文档中的所有书签,可以使用 PdfDocument.Bookmarks.Clear() 方法.

    4. 保存更新后的 PDF 文档
      使用 PdfDocument.SaveToFile() 方法保存修改后的文档。

    实现代码

    from spire.pdf import *# 打开现有的 PDF 文档
    pdf = PdfDocument("添加嵌套书签.pdf")# 检查是否存在书签,如果存在,删除第一个书签(其子书签会被一并删除)
    if pdf.Bookmarks.Count > 0:pdf.Bookmarks.RemoveAt(0)# 可选:删除所有书签
    # pdf.Bookmarks.Clear()# 保存更新后的 PDF
    pdf.SaveToFile("删除书签.pdf")
    pdf.Close()
    

    以上就是使用Python添加、修改、提取和删除PDF书签的全部内容。感谢阅读!

    相关文章:

  • AI量化交易是什么?它是如何重塑金融世界的?
  • 如何评估开源商城小程序源码的基础防护能力?
  • 蓝桥杯2300 质数拆分
  • 四:操作系统cpu调度之调度算法
  • JVM类加载机制
  • Java设计模式之桥接模式:从入门到精通
  • 1-3V升3.2V升压驱动WT7013
  • 利用ffmpeg截图和生成gif
  • esp32课设记录(四)摩斯密码的实现 并用mqtt上传
  • fnOS手机APP+NAS架构:破解跨地域数据实时访问的内网穿透难题
  • 5月19日笔记
  • lammps后处理:堆垛层错和孪晶的数量统计
  • 03 接口自动化-精通Postman之接口鉴权,接口Mock,接口加解密以及接口签名Sign
  • 仿腾讯会议——音频服务器部分
  • 5:OpenCV—图像亮度、对比度变换
  • 问题|对只允许输入的变量是否进行了更改
  • 禁止在Windows命令行输入python后跳转Microsoft Store
  • 使用 Terraform 创建 Azure Databricks
  • 【SpringBoot】从零开始全面解析SpringMVC (三)
  • MCU 温度采样理论(-ADC Temperature sensor)
  • 习近平在河南洛阳市考察调研
  • 外汇局:4月下旬外资投资境内股票转为净买入
  • 4月份国民经济顶住压力稳定增长
  • 宫崎骏的折返点
  • 经济日报:政府采购监管篱笆要扎得更牢
  • 义乌至迪拜“铁海快线+中东快航”首发,物流成本降低18%