5 种使用Python自动化处理PDF的实用方法介绍

2025-09-27 01:50

本文主要是介绍5 种使用Python自动化处理PDF的实用方法介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务...

自动化处理 PDF 文件已成为减少重复工作、提升工作效率的重要手段。对于需要处理报表、合同或发票的开发者来说,手动操作往往耗时且容易出错。python 因其简单易用且拥有丰富生态系统,提供了多种库,使得 PDF 的拆分、合并、提取和生成等操作变得更加便捷。本文将介绍五种实用方法,从内置工具到专业库,帮助你在 Python 中实现 PDF 任务的自动化。

使用内javascript置库(os、subprocess)调用外部工具

在 Python 中,标准库如 ossubprocess 并不直接支持 PDF 操作,但你仍可以利用它们调用外部命令行工具,从而完成基本的 PDF 操作,例如合并、拆分或转换文件。下面的示例演示如何借助命令行工具将 PDF 文件转换为 .txt 文档:

import subprocess
import os

input_path = r"E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf"
output_path = r"E:/Administrator/Python1/output/转为TXT.pdf"

# 调用命令行工具 pdftotext
subprocess.run(["pdftotext", input_path, output_path])

if os.path.exists(output_path):
    print("文本提取成功:", output_path)

注意:此代码依赖 Windows 下的第三方命令行工具 Poppler。

使用 PyPDF2 进行基本 PDF 操作

在了解了 Python 内置库之后,我们来看最受欢迎的开源 Python PDF 库之一——PyPDF2。这个轻量级且广泛使用的库,可以方便地完成常见 PDF 操作,如合并多个文www.chinasem.cn件、拆分文档、旋转页面以及提取文本。对于只需进行基础 PDF 操作的开发者来说,它是一个很好的起点,无需依赖繁重的外部工具。

下面的代码示例展示了如何使用 PyPDF2 拆分 PDF,并将前两页保存为新的 PDF 文件:

from PyPDF2 import PdfReader, PdfWriter

input_path = r"E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf"
output_path = r"E:/Administrator/Python1/output/拆分PDF.pdf"

# 创建 PdfReader 对象并读取源 PDF
reader = PdfReader(input_path)

# 创建 PdfWriter 对象
writer = PdfWriter()

# 拆分 PDF,并将前两页添加到 writer
for i in range(2):  
    writer.add_page(reader.pages[i])

# 将拆分后的 PDF 写入新文件
with open(output_path, "wb") as f:
    writer.write(f)

print("拆分后的 PDF 已生成:", output_path)

以下为拆分后的 PDF 与原文档的对比预览:

5 种使用Python自动化处理PDF的实用方法介绍

使用 pdfplumber 精准提取文本

PDF 文件通常难以直接编辑,因此许多人希望提取其中的内容(如文本或表格)以便在其他场景中复用。这时 pdfplumber 就非常实用。它是专门用于文本和表格提取的开源 Python 库,能够在保持原有结构的同时提供高度准确的提取结果,非常适合需要可靠数据提取的场景。

下面的示例展示如何使用 pdfplumber 从 www.chinasem.cnPDF 中提取文本并输出到控制台:

import pdfplumber

input_path = r"/input/AI绘画的利与弊-图片版.pdf"

with pdfplumber.open(input_path) as pdf:
    page = pdf.pages[1]
    text = page.extract_text()
    print("第一页提取的文本:\n", text)

使用 ReportLab 创建和定制 PDF

到目前为止,我们主要关注的是从现有 PDF 文档中提取或转换内容,或拆分页面。除了处理已有文件外,许多场景还需要动态生成 PDF 文档,例如自动生成报表、添加水印或插入图表和图片。ReportLab 是一个强大的 Python 库,允许开发者从零创建 PDF 文件,并对内容和布局进行高度定制。借助 ReportLab,你可以轻松生成个性化 PDF,以满足各种业务或展示需求。

下面的 Python 示例展示如何使用 ReportLab 创建 PDF 文件:

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

output_path = r"/output/生成PDF.pdf"

c = canvas.Canvas(output_path, pagesize=A4)
c.drawString(100, 750, "this is a PDF created using ReportLab.")
c.drawString(100, 730, "You can add text, images and even tables.")
c.showpage()
c.save()

print("新 PDF 已生成:", output_path)

以下为输出文件预览:

5 种使用Python自动化处理PDF的实用方法介绍

使用专业库如 Spire.PDF 应对高级场景

除了开源库外,Python 还有商业选项,例如 Spire.PDF for Python,它提供了全面的功能,涵盖几乎所有常见的 Adobe AcroBAT 操作,如 PDF 加密、数字签名和格式转换。同时,它还支持一些 Acrobat 难以处理的高级任务,如批量表单字段处理、生成带复杂图表的动态 PDF 以及自动化 PDF 报告创建。对于需要专业、自动化且高度定制的 PDF 处理工作,Spire.PDF 提供了灵活高效的解决方案。

下面通过两个代码示例展示 Spire.PDF 在 Python 中的应用

以下示例演示如何为 PDF 文件添加数字签名:

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

# 加载 PDF
doc = PdfDocument()
doc.LoadFromFile("/input/Booklet.pdf")

# 创建签名生成器
signatureMaker = PdfOrdinarySignatureMaker(doc, "/alice.pfx", "e-iceblue")

# 配置签名属性,如签名者姓名、联系方式、位置和签名原因
signature = signatureMaker.Signature
signature.Name = "Alice"
signature.ContactInfo = "+86 12345678"
signature.Locatioandroidn = "China"
signature.Reason = "Author"

# 创建自定义签名外观
appearance = PdfSignatureAppearance(signature)
appearance.NameLabel = "Signer: "
appearance.ContactInfoLabel = "Tel: "
appearance.LocationLabel = "Address:"
appearance.ReasonLabel = "Reason: "
appearance.SignatureImage = PdfImage.FromFile("/signature2.png")
appearance.GraphicMode = GraphicMode.SignImageAndSignDetail
appearance.SignphpImageLayout = SignImageLayout.none

# 获取首页
page = doc.Pages[0]

# 将签名添加到页面指定位置
signatureMaker.MakeSignature("Alice sign", page, 90.0, 600.0, 260.0, 100.0, appearance)

# 保存已签名文档
doc.SaveToFile("/output/数字签名.pdf")
doc.Close()

结果预览:

5 种使用Python自动化处理PDF的实用方法介绍

以下示例展示如何使用打开密码和权限密码加密 PDF:

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

# 加载 PDF 文件
doc = PdfDocument()
doc.LoadFromFile("/input/AI绘画的利与弊-图片版.pdf")

# 使用打开密码和权限密码加密 PDF
doc.Security.Encrypt("openPsd", "permissionPsd", PdfPermissionsFlags.FillFields, PdfEncryptionKeySize.Key128Bit)

doc.SaveToFile("/output/加密PDF.pdf", FileFormat.PDF)

总结

总的来说,Python 提供了丰富的解决方案来处理 PDF,从满足基础需求的开源库到针对复杂工作流提供高级功能的商业工具。根据项目需求——无论是简单的文本提取、文档转换,还是构建完整的自动化 PDF 工作流——开发者都可以选择最适合的方案,在功能性、易用性和性能之间找到最佳平衡。

到此这篇关于5 种使用Python自动化处理PDF的实用方法介绍的文章就介绍到这了,更多相关Python自动化处理PDF内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于5 种使用Python自动化处理PDF的实用方法介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引