A django app to render django templates as PDF files.
Project description
django-renderpdf is a Django app to render django templates as PDF files.
Introduction
Rendering PDFs for web developers is generally pretty non-trivial, and there’s no common approach to doing this. django-renderpdf attempts to allow reusing all the known tools and skills when generating a PDF file in a Django app:
Use Django template files, which are internally rendered as HTML and them PDF files.
Use staticfiles app to include any CSS or image files.
Simply subclass a PDFView class which has an interface very similar to Django’s own built-in View classes.
Background
django-renderpdf actually started out as code on multiple of my own projects (including some public ones).
After some time, it became clear that I’d been copy-pasting PDF-related bits across different projects, and since co-workers expressed interest in this design (using the Django templating system to generate PDFs), it finally made sense to move this into a separate library.
Because of this, documentation is still a work in progress (the code far outdates this API being public), and while unit tests are lacking, this code has had ample field testing.
Usage example
Hint: Though PDFView’s methods has extensive docstrings you should check.
Let’s assume we have some Shipment object, and we want to print PDF labels for it. Here’s a usage code example for a view that does that.
from django.contrib.auth.mixins import LoginRequiredMixin
from django_renderpdf.views import PDFView
class LabelsView(LoginRequiredMixin, PDFView):
"""Generate labels for some Shipments.
A PDFView behaves pretty much like a TemplateView, so you can treat it as such.
"""
template_name = 'my_app/labels.html'
def get_context_data(self, *args, **kwargs):
"""Pass some extra context to the template."""
context = super().get_context_data(*args, **kwargs)
context['shipments'] = models.Shipment.objects.filter(
batch_id=kwargs['pk'],
)
return context
And in urls.py:
from django.urls import path
path(
'/shipments/labels/<int:pk>/',
views.LabelsView.as_view(),
name='shipment_labels',
),
Changelog
v2.0.1
Improve handling of remote staticfiles.
v2.0.0
Support Python 3.7 and 3.8.
Support Django 2.2, 3.0 and 3.1.
Drop support for Django < 2.2.
Licence
django-renderpdf is licensed under the ISC licence. See LICENCE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_renderpdf-2.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d802f4d0791194b81e14b5a231b9cb029ac482833436a7b7663b8274adcf95dd |
|
MD5 | 2bcbc08d5a835c24f64afc34ec1b29f6 |
|
BLAKE2b-256 | f5cac787039b952caaaa2bfb8101d67b911471bdd8471e3e6edbe39e2bbf9700 |