Создание компактных, печатных PDF из нескольких страниц часто требуется для отчетов, каталогов и руководств. Aspose.PDF for Python via .NET предоставляет мощный SDK, который позволяет программно создавать буклеты в формате PDF на Python с детальным контролем. В этом руководстве вы узнаете, как настроить окружение, собрать буклет, при желании добавить закладки и экспортировать окончательный документ.
Что такое PDF Booklet?
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, или укажите полный путь к файлу.
Example:
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‑файлы, подходящие как для печати, так и для цифрового распространения.
