AppyPodBackend¶
OpenOffice Utils via Template Backend¶
This package uses appy.pod to generate documents using a
template in OpenDocument Format .odt/ods.
Following template api, a std way to use it is as follows:
from django.template import loader
tmpl = loader.get_template('example/simple.odt')
pdf_content = tmpl.render(context={...})
Substitution in templates¶
Variable substituition and template logic is done as described in 
appy documentation. appy.pod package returns an OpenDocument
document w/o type conversion (an odt template remains an odt
templates). Conversion to pdf is delegated to LibreOffice.
Conversion to PDF¶
There are 2 main modes that we can convert to pdf using libreoffice:
locally, invoking a Python interpreter that has
unopackage and setting a port to connect to an instance of libreoffice.connetting to an external service (eg.: a Gotenborg docker). This can be forced by setting
POD_CONVERTERto the base url of a gotenberg server.
AppyPod Template¶
thx.appy.backend.Template accepts some more parameters than default
django template,  and has a .save_as method that can be very handy.
Merging files¶
The function func:convert_to_pdf that uses gotenberg service is able to merge files according to following rules:
if a list of template (eg: odt) is provided, all the files are converted in a single pdf. Pdf input files are ignored
if a list of pdf files are provided and
merge = Trueall pdf files are converted. OpenDocument input files are ignored
API¶
- 
class 
thx.appy.backend.AppyPodEngine(params)[sorgente]¶ Initialize the template engine.
params is a dict of configuration settings.
- 
from_string(template_code)[sorgente]¶ Create and return a template for the given source code.
This method is optional.
- 
get_template(template_name)[sorgente]¶ Load and return a template for the given name.
Raise TemplateDoesNotExist if no such template exists.
- 
 
- 
class 
thx.appy.backend.Template(template, backend)[sorgente]¶ - 
render(context=None, request=None, output_format='pdf', forceOoCall=False, external=None)[sorgente]¶ False render function.
- Parametri
 context – context (default: self.context)
request – the current request (optional)
output_format – output file format (.odt, .ods, .pdf - default)
- Ritorna
 generated file stream if created, else None
- 
save_as(output_path=None, output_format=None, context=None, forceOoCall=False, external=None)[sorgente]¶ Save the template into file
- Parametri
 output_path – the output path
- Ritorna
 the open handler of the generated file
from django.template import loader templ = loader.get_template('admin/fax/cover.odt', using='appy') templ.save_as('/tmp/fax.pdf', context={...})
- 
 
- 
thx.appy.backend.convert_to_pdf(files, output_filename=None, merge=False, timeout=10)[sorgente]¶ Convert input to pdf. If many files are handled one single merged file is returned
- Parametri
 file – filename or open file handler (can be a list/tuple)
output_filename – name of the output file (optional)
merge – (boolean). Suggest that we need to generate an output that is the mewrge of input files (that ned to be
.pdf)timeout – timeout for the connection to the server (default settings.POD_CONVERTER_TIMEOUT)