使用Python实现在PDF中添加、导入、复制、移动与删除页面

 更新时间:2025年11月23日 15:49:43   作者:大丸子  
在日常办公和自动化任务中,我们经常需要对 PDF 文件进行页面级的编辑,使用 Python,你可以轻松实现这些操作,而无需依赖 Adobe Acrobat,本文将通过几个常见场景,演示如何使用 Python 操作 PDF 页面,需要的朋友可以参考下

在日常办公和自动化任务中,我们经常需要对 PDF 文件进行页面级的编辑,例如插入空白页、复制现有页、导入其他文件的页面或删除不需要的页面。使用 Python,你可以轻松实现这些操作,而无需依赖 Adobe Acrobat。

本文将通过几个常见场景,演示如何使用 Python 操作 PDF 页面,包括:

  • 添加空白页
  • 导入其他 PDF 的页面
  • 删除特定页面
  • 在文档内部复制页面
  • 移动页面到新位置

所有示例均基于 Free Spire.PDF for Python,你可以通过以下命令安装该库:

pip install spire.pdf.free

1. 向 PDF 添加空白页

from spire.pdf.common import *
from spire.pdf import *

document = PdfDocument()
document.LoadFromFile("G:/Documents/Sample53.pdf")

# 在文档末尾添加一个新页面
new_page = document.Pages.Add(document.Pages.get_Item(0).Size)  # 使用与第一页相同的大小

# 可选:在新页面上绘制文本内容
# text_element = PdfTextWidget("这是一个新添加的空白页面", PdfFont(PdfFontFamily.Helvetica, 12))
# text_element.Draw(new_page, PointF(50, 50))

document.SaveToFile("output_add_blank_page.pdf", FileFormat.PDF)
document.Close()
print("空白页面已添加。")

说明

  • document.Pages.Add() 会在文档末尾添加一个新页面,并返回该页面对象。
  • 若希望在指定位置插入页面,可使用 document.Pages.Insert(index)
  • 通过 PdfTextWidget 可在新页面上绘制文本内容,用于添加标题或标注。

结果展示:

2. 从另一个 PDF 导入页面

from spire.pdf.common import *
from spire.pdf import *

# 加载目标和源PDF文档
target_document = PdfDocument()
target_document.LoadFromFile("G:/Documents/Sample53.pdf")

source_document = PdfDocument()
source_document.LoadFromFile("G:/Documents/Sample89.pdf")

# 导入源文档的第一页到目标文档的末尾
target_document.InsertPage(source_document, 0)

# 若要导入所有页面,可使用循环
# for i in range(source_document.Pages.Count):
#     target_document.InsertPage(source_document, i)

target_document.SaveToFile("output_import_page.pdf", FileFormat.PDF)
target_document.Close()
source_document.Close()
print("页面已从源文档导入。")

说明

  • InsertPage(source_document, page_index) 用于将指定页从一个 PDF 插入到另一个 PDF。
  • 当源文档包含多页时,可遍历其页面进行批量导入。
  • 这种方法非常适合将多个文件合并成一个完整文档。

结果展示:

3. 删除 PDF 中的页面

from spire.pdf.common import *
from spire.pdf import *

document = PdfDocument()
document.LoadFromFile("input.pdf")

# 删除第二页(索引从0开始)
if document.Pages.Count > 1:
    document.Pages.RemoveAt(1)

document.SaveToFile("output_delete_page.pdf", FileFormat.PDF)
document.Close()
print("页面已删除。")

说明

  • RemoveAt(index) 可删除指定索引的页面。
  • 索引从 0 开始,即第一页为 0,第二页为 1
  • 删除页面后应重新保存文件以应用更改。

此方法常用于去除封面页、空白页或广告页等不必要内容。

结果展示:

4. 在文档内部复制页面

from spire.pdf.common import *
from spire.pdf import *

document = PdfDocument()
document.LoadFromFile("G:/Documents/Sample53.pdf")

# 复制第一页(索引为0)
if document.Pages.Count > 0:
    document.InsertPage(document, 0)

document.SaveToFile("output_copy_page_within_doc.pdf", FileFormat.PDF)
document.Close()
print("页面已在文档内复制。")

说明

  • InsertPage(document, page_index) 可将同一文档的指定页复制到文档末尾。
  • 这对于创建模板页或重复页的报表场景非常实用。
  • 若要插入到特定位置,可使用带插入位置参数的重载方法。

结果展示:

5. 移动页面到新的位置

from spire.pdf.common import *
from spire.pdf import *

document = PdfDocument()
document.LoadFromFile("G:/Documents/Sample53.pdf")

if document.Pages.Count > 1:
    temp_path = "temp_page.pdf"

    # Step 1: 导出要移动的页面为单独PDF
    temp_doc = PdfDocument()
    temp_doc.InsertPage(document, 1, 0)
    temp_doc.SaveToFile(temp_path, FileFormat.PDF)
    temp_doc.Close()

    # Step 2: 删除原文档中的该页
    document.Pages.RemoveAt(1)

    # Step 3: 重新加载导出的页面
    imported_doc = PdfDocument()
    imported_doc.LoadFromFile(temp_path)

    # Step 4: 插入到新位置(例如第一页前)
    document.InsertPage(imported_doc, 0, 0)

document.SaveToFile("output_move_page.pdf", FileFormat.PDF)
document.Close()
print("页面已成功移动。")

说明

  • Spire.PDF 暂不支持直接移动页面,因此可通过“导出 + 删除 + 导入”实现。
  • 使用 InsertPage(imported_doc, target_index, source_index) 可以将页面插入到任意位置。
  • 此方法灵活可靠,尤其适用于需要调整页面顺序的情况。

结果展示:

6. 关键类与方法总结

操作类型方法或属性说明
添加空白页Pages.Add()在文档末尾创建新页面,可指定页面尺寸
插入指定位置Pages.Insert(index)在指定索引位置插入空白页
导入页面InsertPage(source_doc, page_index)将其他 PDF 文件中的页面导入到当前文档
删除页面Pages.RemoveAt(index)删除指定页面
复制页面InsertPage(document, page_index)将当前文档的某页复制到文档末尾
移动页面“导出→删除→插入”组合实现页面位置调整

7. 总结

通过以上示例可以看到,Spire.PDF for Python 为 PDF 页面级操作提供了简洁而强大的接口。无论是添加、复制、导入还是删除页面,都可以通过几行代码完成。

这种编程式处理方式特别适合批量文档编辑、自动报表生成或文件结构整理等场景。无需安装 Acrobat,就能轻松构建自己的 PDF 管理工具。

以上就是使用Python实现在PDF中添加、导入、复制、移动与删除页面的详细内容,更多关于Python操作PDF页面的资料请关注脚本之家其它相关文章!

相关文章

  • 使用python批量化音乐文件格式转换的实例

    使用python批量化音乐文件格式转换的实例

    今天小编就为大家分享一篇使用python批量化音乐文件格式转换的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 使用Python实现将中文语音翻译成英语音频功能

    使用Python实现将中文语音翻译成英语音频功能

    本文介绍了中文语音翻译成英语音频的实现方法,主要分为三个步骤:语音识别(将中文语音转为文本)、文本翻译(中文转英文)和语音合成(英文文本转音频),文章详细说明了注意事项,需要的朋友可以参考下
    2025-08-08
  • Python 字典中键映射多个值的问题解决

    Python 字典中键映射多个值的问题解决

    本文主要介绍了在Python中实现一个字典multidict中键可以对应多个值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • TensorFlow实现模型断点训练,checkpoint模型载入方式

    TensorFlow实现模型断点训练,checkpoint模型载入方式

    这篇文章主要介绍了TensorFlow实现模型断点训练,checkpoint模型载入方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python有证书的加密解密实现方法

    python有证书的加密解密实现方法

    这篇文章主要介绍了python有证书的加密解密实现方法,采用了M2Crypto组件进行相关的加密解密操作,包含了详细的完整实现过程,需要的朋友可以参考下
    2014-11-11
  • Python自定义命令行参数选项和解析器

    Python自定义命令行参数选项和解析器

    这篇文章主要介绍了Python自定义命令行参数选项和解析器,本文主要使用的方法为argparse.ArgumentParser(),此模块可以让人轻松编写用户友好的命令行接口,程序定义它需要的参数,需要的朋友可以参考下
    2023-07-07
  • python实现win桌面通知、出现弹窗(三种方式)

    python实现win桌面通知、出现弹窗(三种方式)

    本文主要介绍了python实现win桌面通知、出现弹窗(三种方式),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Python 序列化和反序列化库 MarshMallow 的用法实例代码

    Python 序列化和反序列化库 MarshMallow 的用法实例代码

    marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于对对象进行序列化和反序列化,并同步进行数据验证。这篇文章主要介绍了Python 序列化和反序列化库 MarshMallow 的用法实例代码,需要的朋友可以参考下
    2020-02-02
  • Python正则抓取新闻标题和链接的方法示例

    Python正则抓取新闻标题和链接的方法示例

    这篇文章主要介绍了Python正则抓取新闻标题和链接的方法,结合具体实例形式分析了Python正则匹配页面元素及文件写入相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • python多线程并发及测试框架案例

    python多线程并发及测试框架案例

    这篇文章主要介绍了python多线程并发及测试框架案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论