Как создать PDF-портфолио (несколько файлов в одном PDF) с помощью Python
При работе с документами программно часто возникает необходимость объединить несколько связанных файлов в один пакет. Хотя слияние PDF или добавление вложений в PDF решает некоторые задачи, эти методы не идеальны, когда каждый файл должен оставаться независимым и одинаково важным.
Здесь на помощь приходит PDF-портфолио.
В этой статье вы узнаете, что такое PDF-портфолио, чем оно отличается от PDF с вложениями и как создать PDF-портфолио с несколькими файлами с помощью Python.
Что такое PDF-портфолио?
PDF-портфолио — это специальный тип PDF, который выступает в роли контейнера для нескольких файлов. Вместо традиционных страниц PDF оно предоставляет структурированный вид — похожий на папку, в которой перечислены все файлы с их метаданными.
PDF-портфолио может содержать:
PDF-документы
Файлы Word и Excel
Изображения
Любые другие типы файлов
Каждый файл остаётся независимым и может быть открыт или извлечён отдельно.
Типичные сценарии использования:
Юридические или комплаенс-пакеты документов
Проектные отчёты с файлами разных форматов
Финансовые или аудиторские пакеты
Архивирование связанных документов в один файл
⚠️ Важно: PDF-портфолио лучше всего открывать в Adobe Acrobat. Большинство веб-просмотровщиков PDF не поддерживают полностью интерфейс портфолио.
PDF-портфолио vs PDF с вложениями
Хотя оба метода позволяют включать несколько файлов в PDF, они служат разным целям.
Итог:
Используйте PDF-вложения, когда есть один основной документ и дополнительные файлы.
Используйте PDF-портфолио, когда все файлы одинаково важны и требуется чёткая организация.
Установка необходимой библиотеки Python
Для создания PDF-портфолио в Python можно использовать Free Spire.PDF для Python, который имеет встроенную поддержку коллекций (портфолио).
Установите библиотеку через pip:
pip install spire-pdf-free
Пример на Python: создание PDF-портфолио
В этом примере мы создадим PDF-портфолио, которое:
Добавляет все файлы из одной папки напрямую в портфолио
Добавляет файлы из другой папки в отдельные подпапки
Сценарий
Folder1/ → файлы добавляются напрямую в портфолио
Folder2/ → каждый файл помещается в отдельную подпапку
Выходной файл → CreatePDFPortfolio.pdf
Код на Python
from spire.pdf import PdfDocument
import glob
# Папки с файлами
folder_main = "Folder1/*"
folder_sub = "Folder2/*"
# Выходной PDF-портфолио
output_file = "CreatePDFPortfolio.pdf"
# Создаем PDF-документ (контейнер портфолио)
document = PdfDocument()
# Добавляем файлы из первой папки напрямую в портфолио
for file_path in glob.glob(folder_main):
document.Collection.AddFile(file_path)
# Добавляем файлы из второй папки в отдельные подпапки
for index, file_path in enumerate(glob.glob(folder_sub), start=1):
subfolder = document.Collection.Folders.CreateSubfolder(f"SubFolder{index}")
subfolder.AddFile(file_path)
# Сохраняем PDF-портфолио
document.SaveToFile(output_file)
document.Close()
Пояснение к коду
PdfDocument() инициализирует новый PDF-портфолио-контейнер.
document.Collection.AddFile() добавляет файлы напрямую в портфолио.
CreateSubfolder() создаёт логические подпапки внутри портфолио.
Каждый файл из Folder2 помещается в отдельную подпапку для лучшей организации.
В результате получается один PDF-портфолио, содержащий несколько файлов и подпапок.
Заключение
PDF-портфолио — это отличный способ упаковать несколько связанных файлов в один PDF без слияния их в один документ. По сравнению с обычными вложениями, оно обеспечивает лучшую организацию и удобство работы с файлами, особенно для профессиональной документации.
Главные выводы:
PDF-портфолио рассматривает файлы как основные объекты, а не дополнения.
Идеально подходит для структурированных пакетов документов.
Совместимость с просмотрщиками следует учитывать (рекомендуется Adobe Acrobat).
Если вы часто работаете с пакетами документов, создание PDF-портфолио с помощью Python может существенно упростить процесс доставки и архивирования файлов.


![[Telegram] СТУДЕНТЫ - В С Ё! Сделал бота который конвертирует файлы. Бесплатно](https://cs18.pikabu.ru/s/2026/02/21/00/khbrdsaf.jpg)



