首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 Python 开发专属 PDF 文档处理助手

在日常工作中,PDF 文档处理是不可避免的任务,比如合并多个PDF、提取页面或从中提取文字和图像。今天,我们将使用 Python 构建一个功能强大的 PDF 文档处理助手,让这些操作变得轻而易举。

 环境准备

我们需要借助以下 Python 库来处理 PDF 文件:

PyPDF2:处理 PDF 文件的常用库(支持合并、拆分、加密等操作)。

pdfplumber:从 PDF 中提取文字和图片。

reportlab:生成和编辑 PDF 文档。

安装这些库:

pip install PyPDF2 pdfplumber reportlab

 功能一:拆分 PDF 文件

拆分 PDF 文件常用于从大文档中提取特定页面。以下代码演示了如何实现:

from PyPDF2 import PdfReader, PdfWriter

def split_pdf(input_file, output_file, start_page, end_page):

  reader = PdfReader(input_file)

  writer = PdfWriter()

  for page_num in range(start_page - 1, end_page):

      writer.add_page(reader.pages[page_num])

  with open(output_file, "wb") as output_pdf:

      writer.write(output_pdf)

# 示例调用

split_pdf("sample.pdf", "output.pdf", 1, 3)

效果:将sample.pdf的第 1 页到第 3 页提取并保存为output.pdf。

 功能二:合并多个 PDF

当需要将多个 PDF 文件合并成一个文档时,这段代码会派上用场:

from PyPDF2 import PdfMerger

def merge_pdfs(pdf_list, output_file):

  merger = PdfMerger()

  for pdf in pdf_list:

      merger.append(pdf)

  with open(output_file, "wb") as output_pdf:

      merger.write(output_pdf)

# 示例调用

merge_pdfs(["file1.pdf", "file2.pdf", "file3.pdf"], "merged.pdf")

效果:将file1.pdf、file2.pdf和file3.pdf合并为merged.pdf。

 功能三:从 PDF 中提取文本

提取 PDF 文件的文字信息对数据分析或内容检查非常有用。

import pdfplumber

def extract_text_from_pdf(pdf_file):

  with pdfplumber.open(pdf_file) as pdf:

      for page in pdf.pages:

          print(page.extract_text())

# 示例调用

extract_text_from_pdf("sample.pdf")

效果:逐页输出sample.pdf中的文字内容。

 功能四:提取 PDF 中的图片

从 PDF 提取图片可以用于图像存档或数据标注任务。

import pdfplumber

def extract_images_from_pdf(pdf_file, output_folder):

  with pdfplumber.open(pdf_file) as pdf:

      for page_num, page in enumerate(pdf.pages, start=1):

          for img_num, img in enumerate(page.images, start=1):

              image = pdf.pages[page_num - 1].images[img_num - 1]

              with open(f"{output_folder}/page{page_num}_img{img_num}.jpg", "wb") as img_file:

                  img_file.write(image)

# 示例调用

extract_images_from_pdf("sample.pdf", "images")

 功能五:生成带水印的 PDF

为 PDF 文档添加水印是确保版权保护的重要步骤。

from PyPDF2 import PdfReader, PdfWriter

def add_watermark(input_file, watermark_file, output_file):

  reader = PdfReader(input_file)

  watermark_reader = PdfReader(watermark_file)

  watermark_page = watermark_reader.pages[0]

  writer = PdfWriter()

  for page in reader.pages:

      page.merge_page(watermark_page)

      writer.add_page(page)

  with open(output_file, "wb") as output_pdf:

      writer.write(output_pdf)

# 示例调用

add_watermark("sample.pdf", "watermark.pdf", "watermarked.pdf")

效果:为sample.pdf添加水印,生成watermarked.pdf。

 功能六:自动生成 PDF 报告

借助reportlab,我们可以快速生成专业的 PDF 报告。

from reportlab.pdfgen import canvas

def generate_pdf_report(output_file, title, content):

  c = canvas.Canvas(output_file)

  c.setFont("Helvetica-Bold", 20)

  c.drawString(100, 750, title)

  c.setFont("Helvetica", 12)

  for i, line in enumerate(content, start=1):

      c.drawString(100, 750 - i * 20, line)

  c.save()

# 示例调用

generate_pdf_report("report.pdf", "Python PDF 报告", ["这是第一行内容", "这是第二行内容"])

效果:生成一份名为report.pdf的 PDF 文档,包含标题和内容。

 总结

通过上述功能模块,你的 PDF 助手已经具备了解决大部分 PDF 处理需求的能力。以下是扩展方向:

交互式界面:借助 Tkinter 或 PyQt 构建用户界面。

批处理功能:支持文件夹级操作。

在线服务:用 Flask 或 FastAPI 构建 Web 应用,实现在线处理。

现在,动手试试吧!构建属于你的专属 PDF 助手!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OrSetDdB7q_Mw4nQCc1X3C4Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券