Что найти?

Вставка, удаление и изменение порядка страниц в PDF-файлах на Python

/
/

В этой статье мы продемонстрируем, как изменить порядок PDF-документа несколькими способами:

  • Удаление страниц с помощью pdfrw.
  • Удаление страниц с помощью PyMuPDF.
  • Вставка страниц с помощью PyMuPDF.
  • Разделение четных и нечетных страниц с помощью PyPDF2.

Удаление страниц с помощью pdfrw

Удалить отдельные страницы из файла PDF очень просто:

  • Читать PDF, как входной файл.
  • Записать выбранные страницы в новый PDF-файл, как выходной.

В следующем примере из PDF-документа удаляются первые две страницы. При использовании библиотеки pdfrw файл сначала читается с помощью класса PdfReader(). За исключением первой и второй страницы, каждая страница добавляется в выходной файл с помощью метода addpage(), а затем в конечном итоге записывается на диск.

На рисунке 1 показан результат выполнения кода в четырехстраничном PDF-файле.

# !/usr/bin/python
# Remove the first two pages (cover sheet) from the PDF

from pdfrw import PdfReader, PdfWriter

input_file = "example.pdf"
output_file = "example-updated.pdf"

# Define the reader and writer objects
reader_input = PdfReader(input_file)
writer_output = PdfWriter()

# Go through the pages one after the next
for current_page in range(len(reader_input.pages)):
    if current_page > 1:
        writer_output.addpage(reader_input.pages[current_page])
        print("adding page %i" % (current_page + 1))

# Write the modified content to disk
writer_output.write(output_file)

Удаление первых двух страниц из PDF-файла

Удаление страниц с помощью PyMuPDF

Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).

В следующем примере показано, как использовать список для выбора страниц, которые нужно сохранить в исходном документе. Имейте в виду, что страницы, которые не указаны, не будут частью выходного документа. В нашем случае выходной документ содержит только первую, вторую и четвертую страницы.

# !/usr/bin/python

# Recall that PyMuPDF is imported as fitz
import fitz

input_file = "example.pdf"
output_file = "example-rearranged.pdf"

# Define the pages to keep - 1, 2 and 4
file_handle = fitz.open(input_file)
pages_list = [0,1,3]

# Select the pages and save the output
file_handle.select(pages_list)
file_handle.save(output_file)

Вставка страниц с помощью PyMuPDF

Библиотека PyMuPDF также позволяет вставлять страницы. Он предоставляет методы newPage() для добавления полностью пустых страниц и insertPage() для добавления существующей страницы. В следующем примере показано, как добавить страницу из другого документа PDF в конец другого.

# !/usr/bin/python

# Recall that PyMuPDF is imported as fitz
import fitz

original_pdf_path = "example.pdf"
extra_page_path = "extra-page.pdf"
output_file_path = "example-extended.pdf"

original_pdf = fitz.open(original_pdf_path)
extra_page = fitz.open(extra_page_path)

original_pdf.insertPDF(extra_page)
original_pdf.save(output_file_path)

Разделение четных и нечетных страниц с помощью PyPDF2

В следующем примере используется PyPDF2, и для этого он берет файл, разделяет его на четные и нечетные страницы, сохраняет четные страницы в файле even.pdf и нечетные страницы в odd.pdf.

Этот скрипт в Python начинается с определения двух выходных файлов, even.pdf и odd.pdf, а также их соответствующих объектов записи pdf_writer_even и pdf_writer_odd. Затем в цикле for скрипт просматривает весь PDF-файл и читает одну страницу за другой. Страницы с четными номерами страниц добавляются в поток pdf_writer_even с помощью addPage(), а нечетные номера добавляются в поток pdf_writer_odd. В конце два потока сохраняются на диск в отдельных файлах, как определено ранее.

#!/usr/bin/python3

from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_document = "example.pdf"
pdf = PdfFileReader(pdf_document)

# Output files for new PDFs
output_filename_even = "even.pdf"
output_filename_odd = "odd.pdf"

pdf_writer_even = PdfFileWriter()
pdf_writer_odd = PdfFileWriter()

# Get reach page and add it to corresponding
# output file based on page number
for page in range(pdf.getNumPages()):
    current_page = pdf.getPage(page)
    if page % 2 == 0:
        pdf_writer_odd.addPage(current_page)
    else:
        pdf_writer_even.addPage(current_page)

# Write the data to disk
with open(output_filename_even, "wb") as out:
     pdf_writer_even.write(out)
     print("created", output_filename_even)

# Write the data to disk
with open(output_filename_odd, "wb") as out:
     pdf_writer_odd.write(out)
     print("created", output_filename_odd)

Заключение

Переписать и изменить структуру PDF-файла довольно просто с помощью библиотек pdfrw, PyMuPDF и PyPDF2. С помощью всего нескольких строк кода Python вы можете удалять страницы, разделять их и добавлять новый контент.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

This div height required for enabling the sticky sidebar