Джанго - печатать много документов? - PullRequest
3 голосов
/ 29 декабря 2011

У меня есть приложение Django, которое хранит данные клиента. В настоящее время в базе данных чуть более 1000 клиентов. Два раза в год мне нужно распечатывать индивидуальные письма для каждого клиента. В идеале я хочу иметь возможность нажимать кнопку / ссылку, и вся партия отправляется на принтер; Я не хочу нажимать кнопку «печатать» для каждой буквы, так как это было бы нелепо.

Я думал о том, чтобы использовать Сельдерей для печати всех документов, но я не знаю, как это будет сделано. Мне пришлось бы «собрать» документ и отправить его на принтер, чтобы пользователь не увидел, что это произошло.

Другая идея, которая у меня возникла, заключалась в создании «веб-страницы», содержащей все буквы на одной странице. Затем пользователь может нажать «Печать», и страницы будут выводиться из принтера в виде набора писем. Хотя, это кажется небрежным.

Есть идеи?

Спасибо

Ответы [ 2 ]

5 голосов
/ 29 декабря 2011

Я бы посоветовал использовать wkhtmltopdf для этой задачи. Затем вы можете создавать требуемые буквы из одного длинного HTML-кода с разрывами страниц или отдельно и распечатывать их, как вы регулярно печатаете PDF-файлы.

http://code.google.com/p/wkhtmltopdf/

Поскольку wk обозначает WebKit, он будет печатать исключительно качественные PDF-файлы. Это инструмент командной строки, который вы можете просто загрузить и запустить. Небольшой учебник здесь для вас.

http://shivul.posterous.com/django-create-dynamic-pdfs-using-wkhtmltopdf

ReportLab также является хорошим вариантом. Но я сам не хочу создавать необработанный синтаксис pdf, и HTML-библиотека Pisa для ReportLab не очень хороша. wkhtmltopdf намного лучше и проще в использовании.

1 голос
/ 29 декабря 2011

Я бы предложил использовать что-то вроде Reportlab для создания всего этого в виде одного PDF-документа, который вы можете отправить на принтер за один раз.

См. Документы по созданию PDF-файлов из Django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...