2011-12-28 4 views
3

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

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

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

Любые идеи?

Благодаря

ответ

5

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

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

Как WK означает WebKit он будет печатать исключительно хорошее качество PDF в. Это инструмент командной строки, который вы можете просто загрузить и запустить. Маленький учебник здесь для вас.

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

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

+0

Спасибо за ответ/ссылку. Хотя этот wkhtmltopdf выглядит неплохим вариантом, ваш второй абзац намекнул на еще более простое решение, которое я мог бы изучить, хотя я утверждаю, что он «неряшлив». Вместо того, чтобы конвертировать HTML в PDF, почему бы не просто создать огромную HTML-страницу из представления и вставить ** pagebreaks ** (как вы сказали) между каждой буквой? Я даже не думал о 'pagebreak' в HTML-коде, скорее предположил, что мне придется возиться с получением DIV, чтобы быть точной высотой листа бумаги A4. – Garfonzo

1

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

См. Документы на generating PDFs from Django.

Смежные вопросы