Django сгенерируйте pdf из шаблона с помощью xhtml2pdf - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь сгенерировать файл pdf из шаблона html в моем приложении django.

Сначала я устанавливаю библиотеку:

pip install --pre xhtml2pdf 

, затем создаю в папке своего проекта файл utiils.py с этой функцией:

from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template

from xhtml2pdf import pisa

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    return None

я создаю свой шаблон html, а затем в своем файле views.py создаю класс:

from yourproject.utils import render_to_pdf #created in step 4

class GeneratePdf(View):
    def get(self, request, *args, **kwargs):
        data = {
            'today': datetime.date.today(), 
            'amount': 39.99,
            'customer_name': 'Cooper Mann',
            'order_id': 1233434,
        }
        pdf = render_to_pdf('pdf/invoice.html', data)
        return HttpResponse(pdf, content_type='application/pdf')

на данный момент В моем urls.py я добавляю URL для начала создания PDF

from idocuments.views import GeneratePdf
...

url(r'^fatt_doc/(?P<fat_num>\w+)/$', GeneratePdf),

, но когда я запускаю свое приложение и открываю ссылку, я получаю сообщение об ошибке:

init () принимает 1 позиционный аргумент, но 2 даны

Я думаю, что проблема в моем urls.py, но кто-то может помочь мне узнать, как я могу вызвать функцию для генерации pdf из url?

Огромное спасибо заранее

...