Створення компактних, придатних до друку PDF‑файлів з декількох сторінок часто потрібно для звітів, каталогів та посібників. Aspose.PDF for Python via .NET надає потужний SDK, який дозволяє програмно створювати PDF буклет у Python з детальним контролем. У цьому посібнику ви побачите, як налаштувати середовище, зібрати буклет, за бажанням додати закладки та експортувати фінальний документ.

Що таке PDF-буклет?

PDF‑буклет — це документ, організований таким чином, щоб кілька сторінок можна було надрукувати, скласти та читати як маленьку книгу, посібник, брошуру або каталог. Замість того, щоб зберігати сторінки у звичайному послідовному порядку, генерація буклету переставляє сторінки так, щоб правильні сторінки розташовувалися поруч після друку та складання.

Наприклад, макет брошури може розміщувати одну сторінку з лівого боку листа, а іншу — з правого боку. При двосторонньому друку та складанні сторінки розташовуються у правильному порядку читання.

Буклети зазвичай використовуються для:

  • Каталоги продукції
  • Програми заходів
  • Навчальні посібники
  • Звіти
  • Інструкції
  • Профілі компаній
  • Брошури
  • Невеликі друковані книги

У Python ви можете автоматизувати цей процес замість того, щоб вручну переставляти сторінки у PDF‑редакторі.

API генератора буклетів PDF на Python

Щоб створити PDF-буклет у Python, ми використаємо Aspose.PDF for Python via .NET. Це API для обробки PDF, яке дозволяє розробникам Python створювати, редагувати, конвертувати, розділяти, об’єднувати, захищати, анотувати та маніпулювати PDF‑файлами програмно.

Для створення буклета ключовим класом є:

pdf.facades.PdfFileEditor()

Клас PdfFileEditor забезпечує функції високорівневого маніпулювання PDF‑файлами. У цьому підручнику ми використаємо його метод make_booklet(), щоб перетворити існуючий PDF у формат брошури.

Крок 1: Встановити Aspose.PDF SDK

Спочатку встановіть Aspose.PDF for Python via .NET за допомогою pip:

pip install aspose-pdf

Крок 2: Підготуйте вхідний PDF

Перш ніж створювати буклет, переконайтеся, що у вас вже є вихідний PDF‑файл. Для цього підручника ми будемо використовувати наступну назву файлу:

input.pdf

Вихідний буклет буде збережено як:

booklet.pdf

Помістіть вхідний PDF у той самий каталог, що й ваш скрипт Python, або вкажіть повний шлях до файлу.

Приклад:

project-folder/
├── input.pdf
└── create_booklet.py

Крок 3: Створення простого PDF‑буклета у Python

Найпростіший спосіб створити буклет — викликати make_booklet() з вхідним файлом, вихідним файлом та розміром цільової сторінки.

Наступний код Python створює брошуру, використовуючи розмір сторінки A5:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Create booklet from input PDF
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5
)

print("PDF booklet created successfully.")

Цей код завантажує input.pdf, розташовує його сторінки у вигляді буклету та зберігає результат як booklet.pdf.

Крок 4: Створення користувацького PDF-буклета з лівими та правими сторінками

У багатьох випадках ви можете захотіти керувати тим, які сторінки відображаються з лівого боку, а які — з правого боку макету буклета.

Наступний приклад базується на оригінальному коді C# і перетворює його на Python:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
left_pages = [1, 5]
right_pages = [2, 3]

# Make booklet
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

print("PDF booklet created successfully.")

Пояснення коду

Давайте розберемо код.

Спочатку імпортуйте пакет Aspose.PDF:

import aspose.pdf as pdf

Потім створіть екземпляр PdfFileEditor:

pdf_editor = pdf.facades.PdfFileEditor()

Цей об’єкт забезпечує доступ до високорівневих функцій редагування PDF, включаючи створення буклетів.

Далі визначте розташування сторінок:

left_pages = [1, 5]
right_pages = [2, 3]

Список left_pages визначає сторінки, які будуть розташовані з лівого боку розгортки брошури. Список right_pages визначає сторінки, які будуть розташовані з правого боку.

Нарешті, викличте метод make_booklet():

pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

Це створює буклет і зберігає його як booklet.pdf.

Повний код Python

Ось повний приклад коду для створення PDF‑буклета на Python:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file using Aspose.PDF for Python via .NET.

Args:
        input_pdf: Path to the source PDF file.
        output_pdf: Path where the generated booklet PDF will be saved.
    """

# Create PdfFileEditor object
    pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
    left_pages = [1, 5]
    right_pages = [2, 3]

# Make booklet
    pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

print("PDF booklet created successfully.")

Крок 5: Додати необов’язкові закладки до буклета

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

У наведеному прикладі спочатку створюється буклет, а потім додаються закладки до згенерованого PDF:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks(input_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to an existing PDF document.
    """

# Open generated booklet PDF
    document = pdf.Document(input_pdf)

# Add bookmark for first page
    first_bookmark = pdf.OutlineItemCollection(document.outlines)
    first_bookmark.title = "Booklet Start"
    first_bookmark.bold = True
    first_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(first_bookmark)

# Add bookmark for second page, if available
    if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

# Save PDF with bookmarks
    document.save(output_pdf)

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

add_bookmarks(
        input_pdf="booklet.pdf",
        output_pdf="booklet-with-bookmarks.pdf"
    )

print("PDF booklet with bookmarks created successfully.")

Цей код створює два вихідних файли:

booklet.pdf
booklet-with-bookmarks.pdf

Перший файл містить макет буклета. Другий файл містить буклет з доданими закладками.

Вибір правильного розміру сторінки

У наведених вище прикладах ми використали розмір сторінки A5:

pdf.PageSize.a5

A5 зазвичай використовується для буклетів, оскільки він компактний і підходить для друкованих посібників, брошур та малих каталогів.

Ви можете використовувати інші розміри сторінок залежно від ваших вимог до вихідного результату. Наприклад, якщо ви створюєте більший буклет, ви можете використати A4. Якщо ви готуєте компактний посібник, більш підходящим може бути A5.

Загальні випадки використання буклету включають:

Випадок використанняРекомендований розмір сторінки
Невеликий посібникA5
Каталог продукціїA5 або A4
Програма заходуA5
Навчальний матеріалA4 або A5
Брошура компаніїA5

Кращі практики створення PDF-буклетів

При створенні буклетів програмно майте на увазі наступні моменти.

1. Використовуйте чистий вихідний PDF

Ваш вхідний PDF вже має бути правильно відформатований. Генерація буклета переставляє сторінки, але не переписує внутрішній вміст кожної сторінки.

Перш ніж створювати буклет, перевірте:

  • Поля сторінки
  • Розташування верхнього та нижнього колонтитулів
  • Вбудовування шрифтів
  • Якість зображення
  • Орієнтація сторінки
  • Область обрізки або безпечна зона друку

2. Перевірка кількості сторінок

Буклети найкраще працюють, коли кількість сторінок підходить для складання та друку. Якщо кількість сторінок не збігається ідеально, можливо, доведеться додати порожні сторінки.

Наприклад, брошура може вимагати сторінки кратні чотирьом, оскільки кожен складений лист створює чотири сторони сторінки.

3. Тестовий друк перед пакетним друком

Завжди друкуйте тестову копію перед відправкою буклета на масове друкування. Переглядачі PDF та налаштування принтера можуть впливати на масштабування, поля, двосторонній режим та орієнтацію сторінки.

Рекомендовані налаштування принтера можуть включати:

  • Друкувати з обох сторін
  • Перевернути по короткому або довгому краю, залежно від принтера
  • Фактичний розмір
  • Без автоматичного масштабування
  • Правильний розмір паперу

4. Додати закладки для цифрових копій

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

Закладки особливо корисні для:

  • Довгі звіти
  • Технічні посібники
  • Документи політики
  • Каталоги продукції
  • Навчальний матеріал

5. Використовуйте зрозумілі імена файлів

Використовуйте описові назви для вихідних файлів, особливо під час пакетного створення документів.

Наприклад:

employee-handbook-booklet.pdf
product-catalog-booklet.pdf
training-manual-booklet.pdf

Поширені помилки та виправлення

Помилка: ModuleNotFoundError: Не знайдено модуль ‘aspose’

Це означає, що пакет Aspose.PDF не встановлений у вашому поточному середовищі Python.

Виправте це за допомогою:

pip install aspose-pdf

Якщо ви використовуєте віртуальне середовище, переконайтеся, що воно активовано перед встановленням пакету.

Помилка: Вхідний PDF не знайдено

Якщо ваш скрипт не може знайти вхідний файл, перевірте шлях до файлу.

Замість:

"input.pdf"

Використовуйте абсолютний шлях:

"C:/Users/YourName/Documents/input.pdf"

Або на Linux/macOS:

"/home/user/documents/input.pdf"

Помилка: Виведення буклета не у очікуваному порядку

Якщо ви використовуєте власні масиви лівих та правих сторінок, переконайтеся, що номери сторінок відповідають сторінкам у вихідному PDF.

Приклад:

left_pages = [1, 5]
right_pages = [2, 3]

Ці значення слід вибирати, виходячи з бажаної розкладки листів у буклеті.

Помилка: Закладки не з’являються

Якщо закладки не відображаються у вашому переглядачі PDF, перевірте, чи увімкнено панель закладок у переглядачі. Деякі переглядачі PDF за замовчуванням приховують закладки.

Ви також можете встановити режим сторінки документа, щоб показувати контурні схеми:

document.page_mode = pdf.PageMode.USE_OUTLINES

Додайте це перед збереженням PDF:

document.save(output_pdf)

Створити PDF-буклет у Python: фінальний код

Наступний фінальний код створює PDF‑буклет, додає закладки та зберігає результат:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, booklet_pdf: str) -> None:
    """
    Create a custom PDF booklet using Aspose.PDF for Python via .NET.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        booklet_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks_to_booklet(booklet_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to the generated booklet PDF.
    """

document = pdf.Document(booklet_pdf)

start_bookmark = pdf.OutlineItemCollection(document.outlines)
    start_bookmark.title = "Booklet Start"
    start_bookmark.bold = True
    start_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(start_bookmark)

if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

document.page_mode = pdf.PageMode.USE_OUTLINES
    document.save(output_pdf)

if __name__ == "__main__":
    input_pdf = "input.pdf"
    booklet_pdf = "booklet.pdf"
    final_pdf = "booklet-with-bookmarks.pdf"

create_pdf_booklet(input_pdf, booklet_pdf)
    add_bookmarks_to_booklet(booklet_pdf, final_pdf)

print("PDF booklet created successfully:", final_pdf)

Висновок

У цьому підручнику ви дізналися, як створити PDF‑буклет у Python за допомогою Aspose.PDF for Python via .NET. Ви встановили SDK, створили буклет з існуючого PDF, налаштували розташування лівих та правих сторінок, додали необов’язкові закладки та зберегли готовий буклет у вигляді PDF‑файлу.

Метод PdfFileEditor.make_booklet() корисний, коли потрібно автоматизувати створення буклетів для звітів, каталогів, посібників, брошур та друкованої документації. Поєднуючи створення буклетів із закладками, ви можете генерувати PDF‑файли, які підходять як для друку, так і для цифрового розповсюдження.

Читати далі