Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » response 'application/pdf' множества pdf-файлов как один без загрузки в память [RSS Feed]

#1 Сен. 24, 2013 23:04:37

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

Есть директория с множеством pdf-файлов, нужно их на лету склеить и отдать как один pdf-файл, только вариант окрить все и склеить в памяти не подходит так как етот масив файлов будет генериться еще во время отдачи.

Офлайн

#2 Сен. 25, 2013 11:48:42

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

agryn
склеить
и как ты видишь это склеить?

Офлайн

#3 Сен. 25, 2013 12:37:02

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

Singularity
К сожалению в структуру pdf-формата достаточно не вник. “Склеить” в данном контексте понимаю как с 2..n pdf-файлов получить 1 pdf-файл коректного для обработки pdf-viewera (Adobe или Foxi.. ).

Офлайн

#4 Сен. 26, 2013 11:07:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

А Django тут каким боком то?



Офлайн

#5 Сен. 26, 2013 18:32:52

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

Может просто затарить или zip ?

Офлайн

#6 Сен. 27, 2013 22:48:52

daniel
Зарегистрирован: 2012-04-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

Доброго времени суток!

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

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

Спасибо.




Hosting4Django - качественный хостинг для Django-проектов

Офлайн

#7 Сен. 28, 2013 02:11:47

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

response 'application/pdf' множества pdf-файлов как один без загрузки в память

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 уж много в оперативку загружает.

Отредактировано agryn (Сен. 28, 2013 02:30:21)

Офлайн

  • Начало
  • » Django
  • » response 'application/pdf' множества pdf-файлов как один без загрузки в память[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version