在日常工作和学习中,处理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最新面试题