Отчет

Для вывода информации на печать предусмотрено создание отчетов. Отчет формируется на базе стандартного подхода работы с принтером в Qt PySide2.QtPrintSupport.QPrinter. Создадим макет отчета, в который поместим геометрический объект и карту. Вывод сделаем в файл формата PDF. Для этого предварительно создадим объект принтера и установим необходимые свойства

from PySide2.QtPrintSupport import QPrinter

printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName('../path/to/outdir/report.pdf')

Далее, создадим сам отчет и в конструктор передадим созданный ранее принтер.

from axipy import *

report = Report(printer)

Создадим геометрический элемент и добавим его в отчет. Координаты в единицах измерения листа принтера.

geometryReportItem = GeometryReportItem()
geometryReportItem.geometry = Polygon((10, 10), (10, 100), (100, 100), (10, 10))
geometryReportItem.style = PolygonStyle(45, Qt.red)
report.items.add(geometryReportItem)

Аналогично добавим карту.

table = provider_manager.openfile('world.tab')
world = Layer.create(table)
map = Map([ world ])
mapReportItem = MapReportItem(Rect(10, 110, 200, 210), map)
mapReportItem.scale = 200000000
report.items.add(mapReportItem)

Контекст для печати по подобию рассмотренному контексту для карты.

from PySide2.QtGui import QPainter

painterReport = QPainter(printer)
context = Context(painterReport)

Производим печать.

report.draw(context)

В результате в файловой системе мы получим файл report.pdf, который содержит геометрический элемент и карту.