Report

class axioma.render.Report

План отчета для последующей печати.

Report(parent=None)

Конструктор

Параметры:parent (QObject) – Владелец элемента легенды. При удалении владельца так же удаляется и сам элемент
setOptions(printer)

Инициализация размеров страницы по переданному объекту принтера.

Параметры:printer (QPrinter) – Объект принтера, по параметрам которого производится инициализация
count()

Количество элементов отчета в текущем отчете на данный момент

Результат:Количество
Тип результата:int
addItem(item)

Вставка нового элемента в отчет

Параметры:item (ReportItem) – Вставляемый элемент
removeItem(index)

Удаление элемента по его индексу. Если индекс корректен, элемент будет удален.

Параметры:index (int) – Индекс удаляемого элемента
moveItem(item, index)

Перемещение существующего элемента на новую позицию, если элемент и позиция указаны корректно

Параметры:
  • item (ReportItem) – Перемещаемый элемент
  • index (int) – Индекс, указывающий позицию, куда необходимо переместить элемент
removeItem(item)

Удаление элемента из отчета

Параметры:item (ReportItem) – Удаляемый элемент
insertItem(item, index)

Вставка нового элемента в отчет на конкретную позицию.

Параметры:
  • item (ReportItem) – Вставляемый элемент отчета
  • index (int) – Индекс
index(item)

Получение индекса элемента по значению

Параметры:item (ReportItem) – Искомый элемент
Результат:Индекс искомого элемента, или же -1, если элемент не найден
Тип результата:int
items()

Получение текущего списка элементов отчета

Результат:Список с элементами отчета
Тип результата:list [ReportItem]
at(index)

Получение элемента отчета по его индексу.

Параметры:index (int) – Индекс
Результат:Элемент отчета. Возвращает None в случае, если не найдено
Тип результата:bool
frontItem()

Первый элемент отчета

Результат:Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)
Тип результата:ReportItem
backItem()

Последний элемент отчета

Результат:Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)
Тип результата:ReportItem
rectContents()

Ограничивающий прямоугольник по существующим в рамках отчета элементам отчета

Результат:Ограничивающий прямоугольник
Тип результата:QRectF
rect()

Ограничивающий прямоугольник общего пространства отчета. Здесь возвращается простое произведение размера одной страницы на их количество

Результат:Ограничивающий прямоугольник
Тип результата:QRectF
render(context, excludes=[], pages=[])

Отрисовка отчета в заданном контексте

Параметры:
  • context (Context) – Контекст, в котором будет отрисован отчет
  • excludes (list [ReportItem]) – Элементы отчета, которые не будут отрисованы
  • pages (list [int]) – Страницы, которые не будут отрисованы
horisontalPagesCount()

Количество страниц отчета по горизонтали

Результат:Количество страниц
Тип результата:int
setHorisontalPagesCount(v)

Установка количества страниц по горизонтали

Параметры:v (int) – Новое количество страниц
verticalPageCount()

Количество страниц отчета по вертикали

Результат:Количество страниц
Тип результата:int
setVerticalPageCount(v)

Установка количества страниц по вертикали

Параметры:v (int) – Новое количество страниц
unit()

Единицы измерения отчета, в которых хранятся элементы ReportItem

Результат:Единицы измерения отчета
Тип результата:Unit
sizePage()

Размеры одной страницы отчета

Результат:Размеры страницы
Тип результата:QSizeF
name()

Наименование отчета

Результат:Наименование
Тип результата:str
setName(name)

Задание нового значения наименования отчета

Параметры:name (str) – Новое наименование отчета
fillOnPages()

Максимально заполняет страницу(ы) отчета существующими элементами

Результат:False, если если ничего не делалось и контент не изменился. В противном случае True
Тип результата:bool
coordSystem()

Координатная система отчета

Результат:Координатная система отчета
Тип результата:CoordSystem
dpiPrinter()

Разрешение принтера. Инициализируется при передаче объекта принтера в метод setOptions

Результат:Разрешение принтера
Тип результата:int
progress(value, total)

[signal] Сигнал, возникающий при изменении прогресса выполнения

Параметры:
  • value (int) – Текущее значение
  • total (int) – Общее количество
needRedrawItem(rect)

[signal] Сигнал, возникающий при необходимости перерисовки части отчета

Параметры:rect (QRectF) – Прямоугольник для обновления

Пример использования:

# Создание элемента отчета типа геометрический объект
# Текст рассматиривается как геометрия. Пример создания см. style.py
def createGeometryItem(report):
    print('Геометрия...')
    poly = QPolygonF();
    poly << QPointF(20,20) << QPointF(80,50) << QPointF(120,20) << QPointF(320,320) << QPointF(120,180) << QPointF(20,20)
    geom = Polygon(cs_ne, poly) # Задание геометрии
    style = MapBasicStyle().styleFromString("Pen (1, 5, 16711935) Brush (8, 255, 16777215)") # Задание стиля оформления
    geomItem = GeometryReportItem(report) # Элемент отчета
    geomItem.setGeometry(geom) # Геометрия элемента в координатах отчета
    geomItem.setStyle(style) # Стиль оформления геометрии
    report.addItem(geomItem) # Добавляем в отчет

# Создание контекста
def createContext(painter):
    deviceRect = sceneRect = QRectF(0,0,100,100)
    viewport = Viewport (deviceRect,sceneRect)
    return Context(painter, viewport)

def dumpReport(printer):
    try:
        report = Report(axioma.app.mainWindow)
        report.setHorisontalPagesCount(2)
        report.setVerticalPageCount(2)
        printer.setPaperSize(QPrinter.A4)
        report.setOptions(printer)
        printer.setOutputFormat(QPrinter.PdfFormat) # Pdf как выходной файл
        filename = QDir.temp().filePath('layout_out.pdf') # Имя выходного файла
        printer.setOutputFileName(filename)
        painter = QPainter(printer)
        context = createContext(painter)
        createGeometryItem(report) # Создание элемента отчета
        report.render(context)  # Отрисовка
        print(QObject().tr("Элементов отчета:"), report.count())
        print('Сохранено в файле ', filename)
    except Exception as ex:
        print(ex)


  #printer = QPrinter(QPrinter.HighResolution) # Создание принтера с высоким разрешением (1200dpi для Pdf или зависит от принтера)
  printer = QPrinter() #Создание принтера с обычным разрешением
  dumpReport(printer)