Skip to main content

Django class based views to generate pdf files using html or latex template.

Project description

Django Persian PDF is a set of class based views allowing you to generate PDF reports using html or latex templates. Django Persian PDF under the hood uses two compiler to render template and build the actual pdf file: - Xelatex - Google Chrome

Using this approach avoids regular overhead for parsing html tags, improving overall response time and memory usage when generating large pdf files. Django Persian PDF follows django class based views and base on the compiler provide 4 generic view classes. The only difference is that these classes render their associated template and return a pdf file as response. Just like django views you can pass queryset or make context to be used in template. Here are the view classes available in django_persian_pdf:

  • ChromePDFTemplateView is an extension of django TemplateView which uses chrome and .html template to generate pdf file.

  • ChromePDFDetailView is an extension of django DetailView which uses chrome and .html template to generate pdf file.

  • LatexPDFTemplateView is an extension of django TemplateView which uses latex and .tex template to generate pdf file.

  • LatexPDFDetailView is an extension of django DetailView which uses latex to and .tex template to generate pdf file.

Status

https://github.com/bindruid/django-persian-pdf/workflows/Test/badge.svg?branch=master https://img.shields.io/pypi/v/django-persian-pdf.svg https://img.shields.io/pypi/pyversions/django-persian-pdf.svg https://img.shields.io/pypi/djversions/django-persian-pdf.svg

Dependencies

  • Django >= 3.2

  • Google Chrome Stable

  • xelatex

Install

pip install django-persian-pdf

Usage

  1. Make sure you have installed either chrome_stable_ or xelatex on your machine.

  2. Edit settings.py and add django_persian_pdf to your INSTALLED_APPS.

  3. Inherit your views from appropriate Template or Detail view classes.

from django_persian_pdf import views

class TemplatePrint(views.ChromePDFTemplateView):
    template_name = 'payment_reports.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context['payments'] = Payments.objects.all()
        return context

class DetailPrint(views.ChromePDFDetailView):
    template_name = 'payment_detail.html'
    queryset = Payments.objects.all()
from django_persian_pdf import views

class TemplatePrint(views.LatexPDFTemplateView):
    template_name = 'payment_reports.tex'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context['payments'] = Payments.objects.all()
        return context

class DetailPrint(views.LatexPDFDetailView):
    template_name = 'payment_detail.tex'
    queryset = Payments.objects.all()
  1. Using latex template for persian requires you to have installed your persian fonts in home.

mkdir -p ~/.fonts
cp /path_to_fonts/Vazirmatn.ttf ~/.fonts/
fc-cache -f -v

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_persian_pdf-0.0.5.tar.gz (6.7 kB view hashes)

Uploaded Source

Built Distribution

django_persian_pdf-0.0.5-py3-none-any.whl (6.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page