html2pdf с Джанго - PullRequest
       1

html2pdf с Джанго

0 голосов
/ 08 июня 2018

Я пытаюсь сгенерировать PDF-файл из HTML-рендеринга. Я использую следующий класс для генерации HTML

Views.py

class ReportList(ListView):
model = Reports
template_name = 'myreports.html' 
context_object_name = 'reports'  
def get_context_data(self, *args,**kwargs):
    context = super(ReportListView, self).get_context_data(*args,**kwargs)
    context['reports'] = Reports.objects.all().values('id','idsys','time','item','customer').filter(id =self.kwargs['id'],.... )
    return context

urls.py

    url(r'^reports/(?P<id>\d+).../$', views.ReportList.as_view(), name = 'myreports'),

Я не представляю, как создать PDF-файл (по ссылке). Я протестировал reportlab и wkhtmltopdf без успеха !!

У вас есть предложения, пожалуйста??

Я также нашел django-easy-pdf, я думаю, что следующий класс мог бы решить мой вопрос:

views.py

class HelloPDFView(PDFTemplateView):
model = Reports
template_name = 'reports.html' 
def get_context_data(self, **kwargs):
    return super(HelloPDFView, self).get_context_data(
        pagesize='A4',
        title='Pdf - Title!',
        **kwargs
    )

но, к сожалению, я не могу использовать его с моим классом Reportlist aboove, мне нужно сначала сгенерировать reports.html, а затем myreport.pdf

urls.py

url(r'^myreports.pdf$', views.HelloPDFView.as_view())

Кроме того, reports.html содержит статические файлы и функции передачи

1 Ответ

0 голосов
/ 20 июня 2018

Полное раскрытие - я запускаю Api2Pdf.com - это оболочка для популярных движков рендеринга PDF, таких как wkhtmltopdf и Chrome без заголовка.Обе эти библиотеки являются отличными, но заставить их работать в вашей среде может быть непросто.

Я написал библиотеку Python, которую вы можете использовать здесь .

В вашемВ этом случае вы бы сделали что-то вроде:

from api2pdf import Api2Pdf

html_template = '<p>Replace this with your report html</p>'
a2p = Api2Pdf('Your-Api-Key')
pdf_options = {
    'pageSize': 'A4',
    'title': 'Pdf - Title!'
}
api_response = a2p.WkHtmlToPdf.convert_from_html(html_template, inline_pdf=True, **pdf_options)
url_to_report = api_response.result['pdf'] 
# redirect the user to url_to_report - which is a link to the PDF

Надеюсь, это поможет

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