πŸ”§ Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PDF с использованиСм Python – ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции

Для измСнСния PDF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PyPDF2. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import PyPDF2

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ PDF-Ρ„Π°ΠΉΠ»
with open('исходный_Ρ„Π°ΠΉΠ».pdf', 'rb') as file:
    # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PdfFileReader
    pdf_reader = PyPDF2.PdfFileReader(file)
    
    # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ количСство страниц Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅
    num_pages = pdf_reader.numPages
    
    # ИзмСняСм тСкст Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС
    for page in range(num_pages):
        # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ страницы
        pdf_page = pdf_reader.getPage(page)
        
        # ИзмСняСм тСкст Π½Π° страницС
        pdf_page.rotateClockwise(90)  # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ измСнСния: ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 90 градусов ΠΏΠΎ часовой стрСлкС
        
    # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PdfFileWriter для записи ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
    pdf_writer = PyPDF2.PdfFileWriter()
    
    # ДобавляСм ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ страницы Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PdfFileWriter
    for page in range(num_pages):
        pdf_writer.addPage(pdf_reader.getPage(page))
    
    # ЗаписываСм измСнСния Π² Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ»
    with open('ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ_Ρ„Π°ΠΉΠ».pdf', 'wb') as output_file:
        pdf_writer.write(output_file)
    

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PDF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python?

Python прСдоставляСт мноТСство возмоТностСй для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° PDF. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ PDF-Ρ„Π°ΠΉΠ»Ρ‹ Π² своСм ΠΊΠΎΠ΄Π΅ Python. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PDF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python.

1. PyPDF2

PyPDF2 - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, которая позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ, Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ страницы, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ водяныС Π·Π½Π°ΠΊΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Для Π½Π°Ρ‡Π°Π»Π° установим Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ:

pip install PyPDF2

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования PyPDF2 для измСнСния PDF-Ρ„Π°ΠΉΠ»Π°. НапримСр, допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° PDF-Ρ„Π°ΠΉΠ»Π° Π² ΠΎΠ΄ΠΈΠ½:

import PyPDF2

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»
with open('file1.pdf', 'rb') as file1:
    pdf1 = PyPDF2.PdfFileReader(file1)

    # ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»
    with open('file2.pdf', 'rb') as file2:
        pdf2 = PyPDF2.PdfFileReader(file2)

        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ»
        output = PyPDF2.PdfFileWriter()

        # ОбъСдиняСм страницы ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°
        for page in range(pdf1.getNumPages()):
            output.addPage(pdf1.getPage(page))

        for page in range(pdf2.getNumPages()):
            output.addPage(pdf2.getPage(page))

        # БохраняСм ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»
        with open('merged.pdf', 'wb') as merged_file:
            output.write(merged_file)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΄Π²Π° PDF-Ρ„Π°ΠΉΠ»Π°, создаСм Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ добавляСм Π² Π½Π΅Π³ΠΎ страницы ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· исходных Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ сохраняСм Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ объСдинСниС исходных Ρ„Π°ΠΉΠ»ΠΎΠ².

2. PyMuPDF

PyMuPDF - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, которая прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Она позволяСт ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ тСкст, изобраТСния, ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Для установки PyMuPDF Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install PyMuPDF

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС PDF-Ρ„Π°ΠΉΠ»Π° с использованиСм PyMuPDF:

import fitz

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ PDF-Ρ„Π°ΠΉΠ»
with fitz.open('file.pdf') as doc:
    # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ страницу
    page = doc[0]

    # ИзмСняСм тСкст Π½Π° страницС
    page.insert_text((100, 100), "Новый тСкст")

    # БохраняСм измСнСния Π² Π½ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅
    doc.save('edited_file.pdf')

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ PDF-Ρ„Π°ΠΉΠ», ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ страницу, добавляСм Π½ΠΎΠ²Ρ‹ΠΉ тСкст Π½Π° страницу ΠΈ сохраняСм измСнСния Π² Π½ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

3. PyPDF2 + reportlab

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ» с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ содСрТимым, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyPDF2 ΠΈ reportlab. reportlab - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для создания ΠΈ рСдактирования PDF-Ρ„Π°ΠΉΠ»ΠΎΠ². Для установки reportlab Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install reportlab

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкст с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyPDF2 ΠΈ reportlab:

import PyPDF2
from reportlab.pdfgen import canvas

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ»
canvas = canvas.Canvas("new_file.pdf")

# ДобавляСм тСкст Π½Π° страницу
canvas.setFont("Helvetica", 12)
canvas.drawString(100, 100, "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!")

# БохраняСм измСнСния
canvas.save()

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ исходный PDF-Ρ„Π°ΠΉΠ»
with open('source_file.pdf', 'rb') as source_file:
    pdf_reader = PyPDF2.PdfFileReader(source_file)

    # ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ»
    with open('new_file.pdf', 'rb') as new_file:
        pdf_writer = PyPDF2.PdfFileWriter(new_file)

        # ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ содСрТимоС исходного Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            pdf_writer.addPage(page)

        # БохраняСм измСнСния Π² Π½ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅
        with open('merged_file.pdf', 'wb') as merged_file:
            pdf_writer.write(merged_file)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ PDF-Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ reportlab ΠΈ добавляСм тСкст Π½Π° страницу. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ исходный PDF-Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyPDF2, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ содСрТимоС исходного Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ сохраняСм измСнСния.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько способов ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PDF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyPDF2, PyMuPDF ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ PyPDF2 + reportlab для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ объСдинСниС Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ тСкста ΠΈ созданиС Π½ΠΎΠ²Ρ‹Ρ… PDF-Ρ„Π°ΠΉΠ»ΠΎΠ². Π–Π΅Π»Π°ΡŽ Π²Π°ΠΌ успСхов Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² PDF Π½Π° python (ΠΏΠΈΡ‚ΠΎΠ½)

Поиск Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста Π² PDF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ python

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ pdf Π² txt Π½Π° python (ΠΏΠΈΡ‚ΠΎΠ½)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как быстро ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² тСкстС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

πŸ“ Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ с нуля для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸš€

🐍 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний python?

πŸ”§ Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PDF с использованиСм Python – ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции

🐍 Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ idle python? 🐍 Π£Π·Π½Π°ΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠ΅ мСста для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ idle python прямо сСйчас!

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ πŸ”Ž

πŸ“š Как бСсплатно Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Python: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ рСсурсы