![Build Status](https://github.com/Terralego/django-template-engines/actions/workflows/python-package.yml/badge.svg)
[![Maintainability](https://api.codeclimate.com/v1/badges/2b6de132c98427007ab4/maintainability)](https://codeclimate.com/github/Terralego/django-template-engines/maintainability)
[![codecov](https://codecov.io/gh/Terralego/django-template-engines/branch/master/graph/badge.svg)](https://codecov.io/gh/Terralego/django-template-engines)
![Python Version](https://img.shields.io/badge/python-%3E%3D%203.6-blue.svg)
![Django Version](https://img.shields.io/badge/django-%3E%3D%202.2-blue.svg)
[![PyPI version](https://badge.fury.io/py/django-template-engines.svg)](https://badge.fury.io/py/django-template-engines)
[![Documentation Status](https://readthedocs.org/projects/django-template-engines/badge/?version=latest)](https://django-template-engines.readthedocs.io/en/latest/?badge=latest)
# django-template-engines
## Description
Additional template engines for Django.
Generate :
* PDF (with weasyprint)
* ODT (beta)
* DOCX (alpha)
## Requirements
* Weasyprint has specific requirements https://weasyprint.readthedocs.io/en/stable/install.html
## How to use a specific template backend
In the settings, add:
```
INSTALLED_APPS = [
...
'template_engines',
]
...
# Put custom engines before DjangoTemplates Engine (Custom engines will search ONLY template ending with .pdf (weasyprint) .odt (odt) and .docx (docx)
TEMPLATES = [
{
'BACKEND': 'template_engines.backends.weasyprint.WeasyprintEngine',
'APP_DIRS': True,
'DIRS': [
],
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
{
'BACKEND': 'template_engines.backends.odt.OdtEngine',
...,
},
{
'BACKEND': 'template_engines.backends.docx.DocxEngine',
...,
},
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
```
## Documentation
https://django-template-engines.readthedocs.io/
CHANGELOG
=========
1.3.10 (2022-06-22)
----------------------------
* Add support for sub and sup html tags for odt
1.3.9 (2022-04-26)
----------------------------
* Support django 3.2, django 4.0 and python 3.10
* Add url in logger template tag `image_url_loader`
1.3.8 (2020-10-15)
----------------------------
* allow to use image url loader in pdfs templates
1.3.7 (2020-10-14)
----------------------------
* allow cases where django change pdf suffix
1.3.6 (2020-10-14)
----------------------------
* WARNING : Breaking change
* PDF autodiscovering by WEASYPRINT renderer should now be suffixed by .pdf.html
1.3.5 (2020-10-02)
----------------------------
* Fix ODT images from html, add src in Pictures
1.3.4 (2020-09-29)
----------------------------
* Fix some cases where mimetype can't be guessed
1.3.3 (2020-09-29)
----------------------------
* Fix ODT images display with Word.
1.3.2 (2020-09-28)
----------------------------
* Fix defined police on input text for odt
1.3.1 (2020-09-09)
----------------------------
* Support django 3.1
1.3.0 (2020-06-09)
----------------------------
* Implement Weasyprint PDF Template Engine
1.2.29 (2020-06-05)
----------------------------
* Verify if ODT or DOCX file are zippable file to avoid exceptions
1.2.28 (2020-04-14)
----------------------------
* Fix cases when image didn't fit page
1.2.27 (2020-04-14)
----------------------------
* Translate img tag in from_html for odt templates
1.2.26 (2020-05-04)
----------------------------
* Fix deprecation warnings and bad closing files
1.2.25 (2020-02-24)
----------------------------
* Fix span tags with text:span in from_html
1.2.24 (2019-12-02)
----------------------------
* Add rendering of footer and header
1.2.23 (2019-11-29)
----------------------------
* Remove automatically resize
* Change value conversion px to odt
* Add extension at the end of the generated file
1.2.22 (2019-11-25)
----------------------------
* Change AbstractEngine, inheritate from DjangoTemplates
1.2.21 (2019-11-18)
----------------------------
* Fix context rendering odt.
1.2.20 (2019-11-15)
----------------------------
* fix max_height and max_width
1.2.19 (2019-11-14)
----------------------------
* Add anchor image_url_load, image_load
* Replace width and height for image_url_load, image_load by max_width and max_height
1.2.18 (2019-11-13)
----------------------------
* fix odt image inclusion
1.2.17 (2019-11-07)
----------------------------
* Load odt_tags and docx_tags automatically, remove loads to make it works
* Add tag image_url_load
* Fix odt pictures inside zip
1.2.16 (2019-11-04)
----------------------------
* Allow heading, and text-numbered list in from_html odt tag
1.2.15 (2019-10-28)
----------------------------
* Fix text-input replacement for list inside paragraphs
1.2.14 (2019-10-25)
----------------------------
* Fix text-input replacement for odt
* Add custom style for italic and underline text for html filter
1.2.13 (2019-10-25)
------------------------
Features:
* from_html tag filter for odt templates
1.2.12 (2019-10-23)
------------------------
Fixes:
* automatic escape break line in odt template
1.2.11 (2019-10-23)
------------------------
Improve:
* automatic escape break line in odt template
1.2.10 (2019-10-09)
------------------------
Improve:
* Tags are renamed
* ODT image inclusion
Update:
* From now on, ``{% ... %}`` are also cleaned.
1.2.9 (2019-09-24)
------------------------
Other:
* the template is cleaned before it is filled.
1.2.8 (2019-09-24)
------------------------
Optimize:
* clean methods
Add:
* a method that removes incorrect additions in the template tags of the xml file
Update:
* the documentation
Fix:
* requirements
Other:
* ``AbstractEngine`` becomes ``ZipAbstractEngine`` and allow you to write
custom engines for zip base documents
1.2.7 (2019-09-12)
------------------------
Fixes:
* template generation from different django storage
1.2.6 (2019-09-12)
------------------------
Fixes:
* conditions to determine mimetype template
1.2.5 (2019-09-12)
------------------------
Fixes:
* packaging
1.2.4 (2019-09-12)
------------------------
Fixes:
* Allow mimetype zip for DOCX and ODT
1.2.3 (2019-09-11)
------------------------
Fixes:
* Compatibility with non FileStorageBackend
1.2.2
-----
Update
* Pillow>=5.4.1
1.2.1
-----
`requests` is no longer needed.
1.2.0
-----
From now on, you can specify bold text.
1.1.3
-----
Image loaders can now take width and height as `dxa`, `px`, `pt`, `in`, `cm`
and `emu`.
1.1.2
-----
Add:
* A template tag to load images into a docx template (`docx_image_loader`).
1.0.0
-----
Add:
* Docx template engine (`template_engines.backends.docx.DocxEngine`).
* Docx template class (`template_engines.backends.odt.DocxTemplate`).
0.0.4
-----
* Abstract template engine for writing custom engines
(`template_engines.backends.abstract.AbstractEngine`).
* Abstract template class for writing custom template classes
(`template_engines.backends.abstract.AbstractTemplate`).
* Odt template engine (`template_engines.backends.odt.OdtEngine`).
* Odt template class (`template_engines.backends.odt.OdtTemplate`).
* A template tag to load images into an odt template (`odt_image_loader`).