как генерировать и печатать документы (python) - PullRequest
3 голосов
/ 20 октября 2011

Мне нужно разрешить пользователям редактировать и распечатывать клиентские документы (счета и другие).

Пользователь заполняет форму для печати (выберите клиентов, месяц, сколько копий каждого из 4 типов документов ему нужно) и нажмите кнопку «Печать».

Далее моя система должна сделать (алгоритм):

result = create new word-friendly file  # because user may manually edit it later

for client in form_clients:

    snapshot = select row in snapshots table 
               where client == client and month == form_month

    document1 = generate_from_template(snapshot, tpl1.docx)
    for 1 to form_how_much_copies_of_1_type_of_document_he_or_she_needs:
        result += document1

    document2 = generate_from_template(snapshot, tpl2.docx)
    for 1 to form_how_much_copies_of_2_type_of_document_he_or_she_needs:
        result += document2

    document3 = generate_from_template(snapshot, tpl3.docx)
    for 1 to form_how_much_copies_of_3_type_of_document_he_or_she_needs:
        result += document3

    document4 = generate_from_template(snapshot, tpl4.docx)
    for 1 to form_how_much_copies_of_4_type_of_document_he_or_she_needs:
        result += document4

print result

Требования:

  • возможность редактировать результат (нужно в формате word-frindly)
  • разрывы страниц (каждый документ на новой странице)
  • таблицы, не очень простые, посмотрите на счет tpl, например: tpl example
  • размер шрифта и стиль (например, жирный)
  • сохранить текстовую позицию

Мой вопрос: как сгенерировать этот файл (результат)? Есть проект https://github.com/mikemaccana/python-docx, но не уверен, что он может работать с шаблонами (или, по крайней мере, генерировать таблицы по мере необходимости) ... Или я могу сохранить все свои шаблоны .docx как html и использовать их как обычные шаблоны django, но не уверен, как объединить их вместе в одном документе и создать разрывы страниц ... Или, может быть, мне стоит взглянуть на другие форматы файлов, совместимые со словами? ...

p.s. лучше использовать python, но это не критично, я могу использовать java / perl / ruby ​​/ php / bash / etc ... и устанавливать любые новые Ubuntu-совместимые пакеты ...

1 Ответ

4 голосов
/ 20 октября 2011

Если использование шаблона не является абсолютно обязательным, или если вы хотите воссоздать шаблон с кодом, используйте reportlab для python для создания PDF, а затем распечатайте его.

Посмотрите этот пример о том, как создавать таблицы: http://www.blog.pythonlibrary.org/2010/09/21/reportlab-tables-creating-tables-in-pdfs-with-python/

Также проверьте этот пример счета: https://github.com/radzhome/fedex-commercial-invoice

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