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

2025-11-23 18:50

本文主要是介绍使用Python实现在PDF中添加、导入、复制、移动与删除页面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc...

在日常办公和自动化任务中,我们经常需要对 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("这是一个新添加的android空白页面", 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 可在新页面上绘制文本内容,用于添加标题或标注。

结果展示:

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

2. 从另一个 PDF 导入页面

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

# 加载目标和源PDF文档
target_document = PdfDocument()
target_document.LoadFromFile(http://www.chinasem.cn"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, iChina编程)

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

说明

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

结果展示:

使用Python实现在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
  • 删除页面后应重新保存文件以应用更改。

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

结果展示:

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

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

结果展示:

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

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_www.chinasem.cndoc.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) 可以将页面插入到任意位置。
  • 此方法灵活可靠,尤其适用于需要调整页面顺序的情况。

结果展示:

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

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页面的资料请关注China编程(www.chinasem.cn)其它相关文章!

这篇关于使用Python实现在PDF中添加、导入、复制、移动与删除页面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156249

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?