罪恶克星 发表于 2025-4-1 18:02:49

Python 办公本事:PDF 自动化处理

Python 办公本事:PDF 自动化处理

本文将先容如何使用 Python 实现 PDF 文件的自动化处理,涵盖了解析、归并、拆分、表单处理、文档转换、添加水印与签章、报表生成以及 OCR 文字识别等七项技能。通过这些本事,用户可以大幅提升办公服从,轻松应对各种 PDF 文件操纵需求。
1. PDF 解析和文本提取



[*]工具库:PyPDF2、pdfminer、textract
[*]功能:从 PDF 文件中提取文本信息。
[*]代码示例:import PyPDF2
with open('example.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    for page_num in range(len(reader.pages)):
      text = reader.pages.extract_text()
      print(text)

2. PDF 归并和拆分



[*]工具库:PyPDF2、pdfrw
[*]功能:将多个 PDF 文件归并为一个文件,或将一个 PDF 文件拆分为多个文件。
[*]代码示例:from PyPDF2 import PdfMerger, PdfReader, PdfWriter
merger = PdfMerger()
merger.append('example.pdf')
merger.append('file2.pdf')
merger.write('merged.pdf')
merger.close()

3. PDF 表单处理



[*]工具库:PyPDF2、pdfrw、FPDF
[*]功能:自动添补表单字段、读取已填写数据或生成新表单。
[*]代码示例:from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
def fill_form(input_file, output_file, data):
    c = canvas.Canvas(output_file)
    reader = PdfReader(input_file)
    for page_num, page in enumerate(reader.pages, start=1):
      c.setFont("Helvetica", 12)
      page_width = float(page.mediabox.width)
      page_height = float(page.mediabox.height)
      c.setPageSize((page_width, page_height))
      c.showPage()
      if '/Annots' in page:
            for annot in page['/Annots']:
                if '/T' in annot and '/V' in annot and annot['/Type'] == '/Annot':
                  field_name = annot['/T']
                  if field_name in data:
                        field_value = data
                        c.drawString(annot['/Rect'], annot['/Rect'], field_value)
    c.save()

4. PDF 文档转换



[*]工具库:pdf2image、pdfminer、PyPDF2、python-docx
[*]功能:将 PDF 转换为图像、HTML、纯文本或 Word 文档。
[*]代码示例:

[*]PDF 转图像:from pdf2image import convert_from_path
def pdf_to_image(input_file, output_file):
    images = convert_from_path(input_file)
    for i, image in enumerate(images):
      image.save(f'{output_file}_{i}.jpg', 'JPEG')

[*]PDF 转 HTML:from PyPDF2 import PdfReader
def pdf_to_html(input_file, output_file):
    with open(input_file, 'rb') as file:
      reader = PdfReader(file)
      text = ""
      for page in reader.pages:
            text += page.extract_text()
      with open(output_file, 'w') as html_file:
            html_file.write(f"<html><body>{text}</body></html>")


5. PDF 水印和签章



[*]工具库:PyPDF2、reportlab
[*]功能:为 PDF 文件添加水印或数字签章。
[*]代码示例:from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
import io
def add_watermark(input_file, output_file, watermark_text):
    reader = PdfReader(input_file)
    writer = PdfWriter()
    watermark_buffer = io.BytesIO()
    c = canvas.Canvas(watermark_buffer)
    c.setFont("Helvetica", 48)
    c.rotate(45)
    c.translate(-500, -500)
    c.setFillAlpha(0.3)
    c.drawString(400, 400, watermark_text)
    c.save()
    watermark_buffer.seek(0)
    watermark_pdf = PdfReader(watermark_buffer)
    for i, page in enumerate(reader.pages, start=1):
      watermark_page = watermark_pdf.pages
      page.merge_page(watermark_page)
      writer.add_page(page)
    with open(output_file, 'wb') as file:
      writer.write(file)

6. PDF 报表生成



[*]工具库:matplotlib、reportlab
[*]功能:生成包罗图表、表格和文本的 PDF 报表。
[*]代码示例:import matplotlib.pyplot as plt
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Table, Image
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, Spacer
def create_report(output_file, data):
    doc = SimpleDocTemplate(output_file, pagesize=A4)
    styles = getSampleStyleSheet()
    elements = []
    title = Paragraph("销售报表", styles["Title"])
    elements.append(title)
    elements.append(Spacer(1, 20))
    table_data = data
    table = Table(table_data)
    elements.append(table)
    elements.append(Spacer(1, 20))
    plt.plot(data, marker='o')
    plt.xlabel("日期")
    plt.ylabel("销售额")
    plt.title("销售趋势图")
    plt.savefig("sales_plot.png")
    plt.close()
    image = Image("sales_plot.png", width=400, height=300)
    elements.append(image)
    doc.build(elements)

7. OCR(光学字符识别)



[*]工具库:pdf2image、pytesseract
[*]功能:将扫描的 PDF 文档转换为可搜刮和可编辑的文本。
[*]代码示例:import pdf2image
import pytesseract
def pdf_to_image(input_file):
    images = pdf2image.convert_from_path(input_file)
    return images
def image_to_text(image):
    text = pytesseract.image_to_string(image)
    return text
def save_text_to_file(text, output_file):
    with open(output_file, 'w', encoding='utf-8') as file:
      file.write(text)
def extract_text_from_pdf(input_file, output_file):
    images = pdf_to_image(input_file)
    extracted_text = ""
    for image in images:
      text = image_to_text(image)
      extracted_text += text + "\n"
    save_text_to_file(extracted_text, output_file)

总结

通过掌握 Python PDF 自动化处理的七项技能,用户可以大幅提升办公服从,轻松应对各种 PDF 文件操纵需求。无论是解析文本、归并拆分文件、处理表单、转换格式、添加水印与签章、生成报表,还是进行 OCR 文字识别,Python 都能提供强大的支持。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python 办公本事:PDF 自动化处理