Отчет¶
Для вывода информации на печать предусмотрено создание отчетов. Отчет
формируется на базе стандартного подхода работы с принтером в 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.render import Report, GeometryReportItem, MapReportItem
report = Report(printer)
Создадим геометрический элемент и добавим его в отчет. Координаты в единицах измерения листа принтера.
geometryReportItem = GeometryReportItem()
geometryReportItem.geometry = Geometry.from_wkt(
'POLYGON ((10 10, 10 100, 100 100, 50 50, 100 10, 10 10))')
geometryReportItem.style = Style.from_mapinfo(mapbasic.brush(45, 255, 65535))
report.items.add(geometryReportItem)
Аналогично добавим карту.
mapReportItem = MapReportItem(Rect(10, 120, 190, 220), map)
report.items.add(mapReportItem)
Контекст для печати по подобию рассмотренному контексту для карты.
from PySide2.QtGui import QPainter
from axipy.render import Context
painterReport = QPainter(printer)
context = Context(painterReport)
Производим печать.
report.draw(context)
painterReport.end()
В результате в файловой системе мы получим файл report.pdf, который содержит геометрический элемент и карту.