Python | 分享10个PDF自动化脚本,一定有你用得上的!

在日常工作和学习中,处理PDF文件是一项常见的任务。Python提供了许多强大的库,例如PyPDF2、pdfplumber和reportlab,使我们能够轻松地读取、写入和处理PDF文件。

本文将分享10个实用的PDF自动化脚本,帮助新手小白快速上手。

1. 创建一个新的PDF文件

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

# 创建新的PDF文件并添加文本
def create_pdf(file_name, text):
    c = canvas.Canvas(file_name, pagesize=letter)
    c.drawString(100, 750, text)  # 在指定位置添加文本
    c.save()

create_pdf('example.pdf', '这是我的第一份PDF文档!')
print("新PDF文件已创建!")
 

解释

该脚本使用reportlab库创建一个新的PDF文件,并在其中添加文本。这对于需要生成报告或文档的用户来说是基础且实用的功能,适合快速生成标准格式的文件。

2. 读取PDF文件中的文本

import PyPDF2

# 从PDF文件中读取文本
def read_pdf(file_name):
    with open(file_name, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        text = ''
        for page in range(len(reader.pages)):
            text += reader.pages[page].extract_text() + '\n'  # 提取每一页的文本
    return text.strip()

pdf_text = read_pdf('example.pdf')
print("PDF内容如下:")
print(pdf_text)
 

解释

这个脚本读取指定PDF文件中的所有文本内容并打印出来。在分析或提取信息时,这一功能非常有用,可以快速获取文档中的所有文字内容。

3. 合并多个PDF文件

from PyPDF2 import PdfWriter

# 合并多个PDF文件
def merge_pdfs(output_file, *input_files):
    pdf_writer = PdfWriter()
    
    for file_name in input_files:
        pdf_reader = PyPDF2.PdfReader(file_name)
        for page in range(len(pdf_reader.pages)):
            pdf_writer.add_page(pdf_reader.pages[page])  # 添加每一页
    
    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

merge_pdfs('merged.pdf', 'file1.pdf', 'file2.pdf')
print("PDF文件已成功合并!")
 

解释

此脚本将多个PDF文件合并为一个新文件。在需要汇总多个文档或报告时,这个功能非常实用,可以避免繁琐的手动操作。

4. 提取PDF中的图片

import pdfplumber

# 提取PDF中的所有图片
def extract_images_from_pdf(file_name):
    with pdfplumber.open(file_name) as pdf:
        for i, page in enumerate(pdf.pages):
            images = page.images
            for j, img in enumerate(images):
                image = page.to_image()
                img_bbox = img['x0'], img['top'], img['x1'], img['bottom']
                image.crop(img_bbox).save(f'image_page_{i+1}_{j+1}.png')  # 保存图片

extract_images_from_pdf('example.pdf')
print("PDF中的所有图片已成功提取!")
 

解释

该脚本从PDF文件中提取所有图片并保存为PNG格式。这在需要单独获取文档中图像时非常有用,比如进行图像分析或重新利用这些图像。

5. 为PDF文件添加水印

from PyPDF2 import PdfReader, PdfWriter

# 为PDF文件添加水印
def add_watermark(original_file, watermark_file, output_file):
    pdf_writer = PdfWriter()
    original_reader = PdfReader(original_file)
    watermark_reader = PdfReader(watermark_file)

    for page in range(len(original_reader.pages)):
        page_obj = original_reader.pages[page]
        page_obj.merge_page(watermark_reader.pages[0])  # 添加水印
        pdf_writer.add_page(page_obj)

    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

add_watermark('example.pdf', 'watermark.pdf', 'watermarked_output.pdf')
print("水印已成功添加到PDF文件中!")
 

解释

这个脚本为给定的PDF文件添加水印。在保护文档版权或标识来源时,添加水印是一种常用的做法,通过这种方式可以提升文档的专业性。

6. 删除PDF中的特定页面

from PyPDF2 import PdfWriter, PdfReader

# 删除PDF中特定页码的页面
def delete_page_from_pdf(file_name, page_number, output_file):
    pdf_writer = PdfWriter()
    pdf_reader = PdfReader(file_name)
    
    for page in range(len(pdf_reader.pages)):
        if page != page_number:  # 跳过要删除的页码
            pdf_writer.add_page(pdf_reader.pages[page])

    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

delete_page_from_pdf('example.pdf', 1, 'output_without_page_2.pdf')  # 删除第二页
print("特定页面已成功删除!")
 

解释

该脚本从PDF文件中删除特定的页面。在编辑和更新现有文档时,可能会需要去掉不必要的部分,这样的功能能高效实现。

7. 旋转PDF文件中的页面

# 旋转PDF文件中的页面
def rotate_pdf_pages(file_name, output_file, rotation_angle):
    pdf_writer = PdfWriter()
    pdf_reader = PdfReader(file_name)

    for page in range(len(pdf_reader.pages)):
        pdf_page = pdf_reader.pages[page]
        pdf_page.rotate_clockwise(rotation_angle)  # 旋转页面
        pdf_writer.add_page(pdf_page)

    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

rotate_pdf_pages('example.pdf', 'rotated_example.pdf', 90)
print("PDF页面已成功旋转!")
 

解释

这个脚本旋转PDF中的每一页,通常用于修复因扫描方向不正确而导致的排版问题。这样的自动化操作可以节省大量手动调整的时间。

8. 将PDF转换为文本文件

# 将PDF内容转换为文本文件
def convert_pdf_to_text(pdf_file, text_file):
    with open(text_file, 'w', encoding='utf-8') as f:
        text = read_pdf(pdf_file)  # 使用之前定义的函数
        f.write(text)

convert_pdf_to_text('example.pdf', 'output.txt')
print("PDF文件已成功转换为文本文件!")
 

解释

该脚本将PDF文件的内容提取并保存为文本文件。在数据分析和处理时,将PDF内容转换为可编辑的文本格式非常有用。

9. 为PDF文件加密

from PyPDF2 import PdfWriter

# 为PDF文件加密
def encrypt_pdf(file_name, password, output_file):
    pdf_writer = PdfWriter()
    pdf_reader = PdfReader(file_name)

    for page in range(len(pdf_reader.pages)):
        pdf_writer.add_page(pdf_reader.pages[page])
    
    pdf_writer.encrypt(password)  # 设置密码保护

    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

encrypt_pdf('example.pdf', 'securepassword', 'encrypted.pdf')
print("PDF文件已成功加密!")
 

解释

该脚本为PDF文件添加密码保护,以防止未授权访问。在处理敏感信息时,加密PDF文件是确保数据安全的一项重要措施。

10. 解密PDF文件

# 解密已加密的PDF文件
def decrypt_pdf(file_name, password, output_file):
    pdf_writer = PdfWriter()
    pdf_reader = PdfReader(file_name)

    if pdf_reader.is_encrypted:
        pdf_reader.decrypt(password)  # 解密文件

    for page in range(len(pdf_reader.pages)):
        pdf_writer.add_page(pdf_reader.pages[page])

    with open(output_file, 'wb') as out_file:
        pdf_writer.write(out_file)

decrypt_pdf('encrypted.pdf', 'securepassword', 'decrypted.pdf')
print("PDF文件已成功解密!")
 

解释

这个脚本解密已加密的PDF文件,允许用户访问受限内容。确保在合法的情况下使用此功能,通常用于恢复自己的加密文档。

以上就是10个实用的Python PDF自动化脚本示例,希望能帮助你在PDF文件处理方面提高效率!通过这些简单的实例,你可以看到Python在处理PDF文件中的强大能力,同时也能激发你深入探索的兴趣。如果你有任何问题或想法,欢迎随时交流!

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片

二、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

图片

三、python入门资料大全

图片

四、python进阶资料大全

图片

五、python爬虫专栏

图片

六、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

图片

七、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

八、python最新面试题

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

印象Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值