Usage

The PDFTemplateView is a Django class-based view. By default, it uses PDFTemplateResponse to render an HTML template to PDF. It accepts the following class attributes:

template_name
The full name of a template to use as the body of the PDF.
header_template
Optional. The full name of a template to use as the header on each page.
footer_template
Optional. The full name of a template to use as the footer on each page.
filename

The filename to use when responding with an attachment containing the PDF. Default is 'rendered_pdf.pdf'.

If None, the view returns the PDF output inline, not as an attachment.

response_class
The response class to be returned by render_to_response() method. Default is PDFTemplateResponse.
html_response_class
The response class to be returned by render_to_response() method, when rendering as HTML. See note below. Default is TemplateResponse.
cmd_options

The dictionary of command-line arguments passed to the underlying wkhtmltopdf binary. Default is {}.

wkhtmltopdf options can be found by running wkhtmltopdf --help. Unfortunately they don’t provide hosted documentation.

Note

For convenience in development you can add the GET arg ?as=html to the end of your URL to render the PDF as a web page.

Simple Example

Point a URL at PDFTemplateView:

from django.conf.urls.defaults import *
from wkhtmltopdf.views import PDFTemplateView


urlpatterns = patterns('',
    # ...
    url(r'^pdf/$', PDFTemplateView.as_view(template_name='my_template.html',
                                           filename='my_pdf.pdf'), name='pdf'),
    # ...
)

Advanced Example

Point a URL (as above) at your own view that subclasses PDFTemplateView and override the sections you need to.

from wkhtmltopdf.views import PDFTemplateView


class MyPDF(PDFTemplateView):
    filename = 'my_pdf.pdf'
    template_name = 'my_template.html'
    cmd_options = {
        'margin-top': 3,
    }

Unicode characters

Templates containing utf-8 characters should be supported. You will need to ensure that you set the content type in your template file for wkhtmltopdf to interpret it properly.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">