1
votes

I'm trying to convert html files into pdf using django-wkhtmltopdf. But I'm unable to use custom variables with header and footer because I didn't find the exact synatax or correct implementation and also I'm not able to use cover page in wkhtmltopdf v 0.12.5 (patched qt) It throws an error unknown long argument --cover?

*VIEWS.PY*
from django.http import HttpResponse
from django.views.generic import View
from django.template.loader import get_template 
from django.template import Context
import pdfkit

class GeneratePdf(View):
    def get(self, request, *args, **kwargs):
        template = get_template("report.html")
        options = {
    'page-size': 'A4',
    'margin-top': '0.6in',
    'margin-right': '0.00in',
    'margin-bottom': '0.6in',
    'margin-left': '0.00in',
    'encoding': "UTF-8",
    'no-outline': None,
    'disable-smart-shrinking': False,

     'cover': 'cover.html',
    'header-html': 'header.html',
    'footer-html': 'footer.html',
    'header-spacing': 10,
    'footer-spacing': 5,
    'header-right': '[page]',
    }
    pdfkit.from_string(html, 'reports_demo.pdf', options=options)
    pdf = open("reports_demo.pdf")
    response = HttpResponse(pdf.read(), content_type='application/pdf') 
    return response
1
Have you solved it? I'm facing the same problem using Laravel instead of Django.Guilherme do Valle

1 Answers

1
votes

You only need to have separate html files for the header and footer. for Example.

header.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
Code of your header goes here.

Then you can use it.

import pdfkit

pdfkit.from_file('path/to/your/file.html', 'out.pdf', {
    '--header-html': 'path/to/header.html'
})