Найти - Пользователи
Полная версия: response 'application/pdf' множества pdf-файлов как один без загрузки в память
Начало » Django » response 'application/pdf' множества pdf-файлов как один без загрузки в память
1
agryn
Есть директория с множеством pdf-файлов, нужно их на лету склеить и отдать как один pdf-файл, только вариант окрить все и склеить в памяти не подходит так как етот масив файлов будет генериться еще во время отдачи.
Singularity
agryn
склеить
и как ты видишь это склеить?
agryn
Singularity
К сожалению в структуру pdf-формата достаточно не вник. “Склеить” в данном контексте понимаю как с 2..n pdf-файлов получить 1 pdf-файл коректного для обработки pdf-viewera (Adobe или Foxi.. ).
FishHook
А Django тут каким боком то?
Singularity
Может просто затарить или zip ?
daniel
Доброго времени суток!

“Склеить” pdf в памяти (на лету - это как раз в ней родимой) возможно, но это довольно затратно для ресурсов.
К примеру, умеет это http://pybrary.net/pyPdf/

Я бы рекомендовал Вам вынести сборку pdf из http-response и создать очередь заданий с лимитированным количество одновременных процессов, дабы не перегрузить сервер подомными процессами. А ссылку выдывать или ajax'ом после build'а, или же высылать пользователю на email и пр.

Спасибо.
agryn
FishHook
А Django тут каким боком то?
В одной конторе часть их CRM сделана именно на Django. Некоторые их документы генеряться в html а потом идут на печать, при отправке большого массива на печать принтеры вырубаются через переполнение задания, для решения этой проблемы было решено конвертировать html в pdf (pdf-вювери встроенные в браузер берут контроль очереди печати на себя). Так как верстка документов очень специфическая с корректным конвертированием только один wkhtmltopdf и справляться, но его запуск конечно ресурсоемкий.
От я и пробую разные варианты.
daniel
Доброго времени суток!“Склеить” pdf в памяти (на лету - это как раз в ней родимой) возможно, но это довольно затратно для ресурсов.К примеру, умеет это http://pybrary.net/pyPdf/Я бы рекомендовал Вам вынести сборку pdf из http-response и создать очередь заданий с лимитированным количество одновременных процессов, дабы не перегрузить сервер подомными процессами. А ссылку выдавать или ajax'ом после build'а, или же высылать пользователю на email и пр.Спасибо.
Как то не очень хочется менять структуру проекта только для одной печати, хотя конечно самым логичным вариантом было бы использовать celery, но я решил генерить все таки в вюхе по одному документу на запрос, а запросы будут погружаться с помощью периодических запросов из javascript, посмотрю что получиться.
Singularity
Может просто затарить или zip ?
Конечно было б хорошо, но: если затарить то при открытии документа будет отображаться только первая страница, так как pdf имеет непростую структуру, но при zip конечно pdf-вювер не сможет отобразить. Просто как я понял (может и не правильно) PyPdf2 при склеивании pdf уж много в оперативку загружает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB