Создание и слияние PDF-файлов в Python

Я хочу автоматически создавать PDF-файлы подтверждения бронирования в Python. Большая часть контента будет статичной (т. Е. Логотипы, условия бронирования, номера телефонов) с несколькими динамическими битами (даты, затраты и т. Д.).

Со стороны пользователя самым простым способом было бы начать с файла PDF со статическим содержимым, а затем с помощью python просто добавить динамические части. Это простой процесс?

Из нескольких попыток поиска кажется, что я могу использовать reportlab для создания контента и pyPdf для объединения PDF вместе. Это лучший подход? Или есть действительно напуганный способ, с которым я еще не сталкивался?

Благодаря!

Со стороны пользователя самым простым способом было бы начать с файла PDF со статическим содержимым, а затем с помощью python просто добавить динамические части. Это простой процесс?

К сожалению нет. Существует несколько инструментов, которые позволяют создавать PDF-файлы с нуля (чаще всего для Python, ReportLab ), но обычно они не загружают существующие PDF-файлы. Вам нужно будет включить код генерации для любого текстового текста, строк, блоков, фигур и изображений, а не для свободного редактирования пользователем.

С другой стороны есть pyPdf, который может загружать PDF-файлы, сортировать страницы и извлекать часть информации, но не может реально добавлять новый контент. Вы можете «объединить» страницы в один, но вам все равно придется создавать дополнительный оверлей информации в качестве страницы в ReportLab.

Посмотрите на docutils и измените структуру. Вы можете быстро записать свой PDF-документ в реестре, а затем скомпилировать PDF-файл с помощью rst2pdf.py

Я использовал это, он создает очень красивые документы, и разметка расширяема! Позже вы можете взять тот же код и запустить его в rst2html, чтобы создать сайт, если он!

Посмотрите здесь:

Удачи

Вы можете сгенерировать документ с помощью, например, TeX или OpenOffice, или что-то, что дает вам самые удобные привязки, а затем распечатать документ с помощью pdf-принтера.

Это позволяет вам не определять, где точно поместить поля или выяснить, что делать, если ваш контент переполняет пространство, выделенное для него.