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

Python 如何操作 PDF 文件?

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。

🔍 博客内容包括:

  • Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。
  • 大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相关技术。
  • 开发工具:分享常用开发工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升开发效率。
  • 数据库与优化:总结MySQL及其他常用数据库技术,解决实际工作中的数据库问题。
  • Python与大数据:专注于Python编程语言的深度学习,数据分析工具(如Pandas、NumPy)和大数据处理技术,帮助您掌握数据分析、数据挖掘、机器学习等技术。
  • 数据结构与算法:总结数据结构与算法的核心知识,提升编程思维,帮助您应对大厂面试挑战。

🌟 我的目标:持续学习与总结,分享技术心得与解决方案,和您一起探索技术的无限可能!在这里,我希望能与您共同进步,互相激励,成为更好的自己。

📣 欢迎订阅本专栏,与我一起在这个知识的海洋中不断学习、分享和成长!💻🚀


📍版权声明:本博客所有内容均为原创,遵循CC 4.0 BY-SA协议,转载请注明出处。

 

目录

1. 安装所需库

2. 使用 PyPDF2 操作 PDF 文件

2.1 合并多个 PDF 文件

2.2 拆分 PDF 文件

2.3 提取 PDF 文件的文本

3. 使用 pdfminer 提取 PDF 文本

3.1 提取 PDF 文件中的文本

4. 使用 reportlab 创建 PDF 文件

4.1 创建一个简单的 PDF 文件

4.2 在 PDF 中添加图像

5. 使用 PyMuPDF (fitz) 提取文本

5.1 提取 PDF 文件的文本

6. 对 PDF 文件进行加密和解密

6.1 使用 PyPDF2 对 PDF 进行加密

6.2 使用 PyPDF2 对 PDF 进行解密

总结


在 Python 中操作 PDF 文件的常用方法是使用专门的第三方库。这些库可以帮助你完成常见的操作,如读取 PDF 内容、提取文本、合并和拆分 PDF 文件、修改文件等。常用的库包括 PyPDF2pdfminerreportlab 等。下面是一些常见任务的示例。

1. 安装所需库

首先,需要安装必要的库。你可以使用以下命令来安装这些库:

pip install PyPDF2
pip install pdfminer.six
pip install reportlab

2. 使用 PyPDF2 操作 PDF 文件

PyPDF2 是一个非常流行的库,支持对 PDF 文件进行合并、拆分、加密、解密、旋转等操作。

2.1 合并多个 PDF 文件
import PyPDF2

# 创建一个 PDF 合并器对象
pdf_merger = PyPDF2.PdfMerger()

# 需要合并的 PDF 文件列表
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']

# 合并 PDF 文件
for pdf in pdf_files:
    pdf_merger.append(pdf)

# 输出合并后的 PDF 文件
pdf_merger.write('merged_output.pdf')
pdf_merger.close()

print("PDF 文件合并完成!")
2.2 拆分 PDF 文件
import PyPDF2

# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)

    # 获取 PDF 文件的页数
    total_pages = len(reader.pages)

    # 创建一个 PDF 写入器对象
    writer = PyPDF2.PdfWriter()

    # 拆分为每一页一个 PDF 文件
    for page_num in range(total_pages):
        writer.add_page(reader.pages[page_num])

        # 写入到新的 PDF 文件
        with open(f'page_{page_num + 1}.pdf', 'wb') as output_file:
            writer.write(output_file)

    print("PDF 文件拆分完成!")
2.3 提取 PDF 文件的文本
import PyPDF2

# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    text = ""
    
    # 提取所有页的文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        text += page.extract_text()

print("PDF 文件内容:")
print(text)

3. 使用 pdfminer 提取 PDF 文本

pdfminer.six 是一个专注于从 PDF 中提取文本的库,比 PyPDF2 更适合复杂的文本提取操作。它支持从 PDF 中提取文本和元数据。

3.1 提取 PDF 文件中的文本
from pdfminer.high_level import extract_text

# 提取 PDF 文件中的文本
text = extract_text('sample.pdf')

print("提取的文本内容:")
print(text)

4. 使用 reportlab 创建 PDF 文件

reportlab 是一个非常强大的库,主要用于生成 PDF 文件。它提供了丰富的 API 来设计和生成 PDF。

4.1 创建一个简单的 PDF 文件
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# 创建一个 PDF 文件并绘制文本
def create_pdf(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Hello, this is a simple PDF created with ReportLab!")
    c.save()

# 调用函数生成 PDF 文件
create_pdf("output.pdf")
print("PDF 文件创建完成!")
4.2 在 PDF 中添加图像
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def create_pdf_with_image(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Here is an image below:")
    
    # 添加图像
    c.drawImage("image.jpg", 100, 500, width=200, height=150)  # 图像位置和大小
    
    c.save()

create_pdf_with_image("pdf_with_image.pdf")
print("PDF 文件(带图像)创建完成!")

5. 使用 PyMuPDF (fitz) 提取文本

PyMuPDF 是一个处理 PDF、XPS、EPUB 等文件格式的库,功能非常强大且效率较高。你可以使用它来提取文本、图像和其他内容。

5.1 提取 PDF 文件的文本
import fitz  # PyMuPDF

# 打开 PDF 文件
doc = fitz.open('sample.pdf')

# 提取所有页面的文本
text = ""
for page_num in range(len(doc)):
    page = doc.load_page(page_num)
    text += page.get_text()

print("PDF 文件的内容:")
print(text)

6. 对 PDF 文件进行加密和解密

6.1 使用 PyPDF2 对 PDF 进行加密
import PyPDF2

# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    writer = PyPDF2.PdfWriter()
    
    # 将 PDF 中的所有页面添加到 writer 对象中
    for page in reader.pages:
        writer.add_page(page)
    
    # 设置密码
    password = "your_password"
    writer.encrypt(password)
    
    # 写入加密后的文件
    with open('encrypted_sample.pdf', 'wb') as encrypted_file:
        writer.write(encrypted_file)

print("PDF 文件加密完成!")
6.2 使用 PyPDF2 对 PDF 进行解密
import PyPDF2

# 打开加密的 PDF 文件
with open('encrypted_sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 解密 PDF 文件
    password = "your_password"
    if reader.is_encrypted:
        reader.decrypt(password)
    
    # 创建一个 PDF 写入器对象
    writer = PyPDF2.PdfWriter()
    
    # 将解密后的页面添加到写入器中
    for page in reader.pages:
        writer.add_page(page)
    
    # 输出解密后的 PDF 文件
    with open('decrypted_sample.pdf', 'wb') as decrypted_file:
        writer.write(decrypted_file)

print("PDF 文件解密完成!")

总结

使用 Python 处理 PDF 文件是非常常见的任务,通过不同的库,你可以实现 PDF 的各种操作:

  • PyPDF2:用于合并、拆分、加密、解密和提取文本。
  • pdfminer.six:专注于从 PDF 中提取文本,适合需要复杂文本解析的场景。
  • reportlab:用于生成 PDF 文件,支持绘图、添加文本、图片等。
  • PyMuPDF (fitz):支持高效地提取文本、图像等,并处理 PDF 文件。

http://www.kler.cn/a/506493.html

相关文章:

  • 网站收录入口提交的方法有哪些(网站收录的方式都有哪些)
  • 增广卡尔曼滤波AKF的要点分析
  • [系统安全] 六十一.恶意软件分析 (12)LLM赋能Lark工具提取XLM代码的抽象语法树(初探)
  • 单片机存储器和C程序编译过程
  • 中国石油大学(华东)自动评教工具(涵盖爬虫的基础知识,适合练手)
  • 配置AOSP下载环境
  • 2025-01-16 思考-人生下半场的归途-那温和的良夜
  • 运行fastGPT 第四步 配置ONE API 添加模型
  • 干货答疑分享记录:as导入问题,LSP含义,分屏进入SplashScreen
  • windows 电源选项卓越性能开启
  • kotlin的dagger hilt依赖注入
  • AI学习之自然语言处理(NLP)
  • 网络安全——常用语及linux系统
  • VUE学习笔记5__vue指令v-html
  • RK3576 Android14 状态栏和导航栏增加显示控制功能
  • 玩转大语言模型——使用graphRAG+Ollama构建知识图谱
  • Linux Top 命令 load average 指标解读
  • 正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
  • JS宏进阶: 工厂函数与构造函数
  • 【深度学习】PyTorch :调用残差网络(ResNet)
  • nginx反向代理http 和 https(案例)
  • 域名劫持是怎么回事?怎么解决?
  • docker安装和测试redis步骤
  • 8.BMS SOC的算法总结
  • 【20250115】Nature子刊:柔性生物传感与深度学习结合的上肢运动增强外骨骼机器人...
  • 【Rust自学】12.4. 重构 Pt.2:错误处理