Как разделить pdf файл в Python

Как разделить pdf файл в Python

Как разделить pdf файл в Python

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

Для создания скрипта понадобится Python библиотека pikepdf. И прежде создадим виртуальную среду, куда установим все необходимое.



>>>python -m venv my_pikepdf



# активируем ее



>>>cd my_pikepdf/Scripts

>>>activate



# теперь установим саму библиотеку pikepdf

>>>pip install pikepdf


Создадим файл pdf_splitter.py и вызовем импорты



import os

from pikepdf import Pdf


Далее создадим словарь, который сопоставит индексы с текущими страницами в PDF.



file2pages = {

    0: [0, 10],

    1: [10, 20], 

    2: [20, 30],

}





# целевой pdf документ будет предаваться в качестве аргумента cmd



fn = sys.argv[1:][0]



# загрузка файла 



pdf = Pdf.open(fn)



new_pdf_files = [ Pdf.new() for i in file2pages ]



pdf_index_new = 0



# итерация по pdf страницам

for i, pg in enumerate(pdf.pg):

    if i in list(range(*file2pages[pdf_index_new])):

      

        new_pdf_files[pdf_index_new].pages.append(pg)

        print(f"[*] Назначение страницы {i}  {pdf_index_new}-ому файлу")

    else:

        # добавим к имени файла его индекс

        name, ext = os.path.splitext(fn)

        output_fn = f"{name}-{pdf_index_new}.pdf"

        # сохранение файла

        new_pdf_files[pdf_index_new].save(output_fn)

        print(f"[+] Файл: {output_fn} сохранен.")

        

        # переход к следующему 

        pdf_index_new += 1

        

        new_pdf_files[pdf_index_new].pages.append(page)

        print(f"[*] Назначение страницы {i}  {pdf_index_new}-ому файлу")



# сохраним последний файл

name, ext = os.path.splitext(fn)

output_fn = f"{name}-{pdf_index_new}.pdf"

new_pdf_files[pdf_index_new].save(output_fn)

print(f"[+] Файл: {output_fn} сохранен.")


Запустим скрипт:


>>>python pdf_split.py python_book.pdf

Таким образом, при помощи Python и библиотеки pikepdf можно сохранить фрагменты книги в качестве отдельных pdf файлов.

Источник

НЕТ КОММЕНТАРИЕВ

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