gws.plugin.qgis.template

QGIS Print template.

The Qgis print templates work this way:

We read the qgis project and locate a template object within by its title or the index, by default the first template is taken.

We find all label and html blocks in the template and create our html templates from them, so that they can make use of our placeholders like @legend.

When rendering, we render our map as pdf.

Then we render these html templates, and create a clone of the qgis project with resulting html injected at the proper places.

Then we render the Qgis template without the map, using Qgis GetPrint to generate html.

And finally, combine two pdfs so that the qgis pdf is above the map pdf. This is because we need qgis to draw grids and other decorations above the map.

Caveats/todos:

  • both qgis “paper” and the map element must be transparent

  • since we create a copy of the qgis project, it must use absolute paths to all assets

  • the position of the map in qgis is a couple of mm off when we combine, for better results, the map position/size in qgis must be integer

Source code: gws.plugin.qgis.template

Module Contents

class gws.plugin.qgis.template.Config(*args, **kwargs)

Bases: gws.base.template.Config

Object configuration.

provider: Config.provider | None

qgis provider

index: int | None

template index

mapPosition: gws.UomSizeStr | None

position for the main map

cssPath: gws.FilePath | None

css file

class gws.plugin.qgis.template.Object

Bases: gws.base.template.Object

Template object.

provider: Object.provider
qgisTemplate: gws.plugin.qgis.caps.PrintTemplate
mapPosition: gws.UomSize
cssPath: str
htmlBlocks: dict[str, _HtmlBlock]
configure()

Configuration hook.

render(tri)

Render the template and return the generated response.