Report

class axioma.render.Report

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

Report(parent=None)

Конструктор

Параметры

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

addItem(item)

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

Параметры

item (ReportItem) – Вставляемый элемент

at(index)

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

Параметры

index (int) – Индекс

Результат

Элемент отчета. Возвращает None в случае, если не найдено

Тип результата

bool

backItem()

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

Результат

Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)

Тип результата

ReportItem

coordSystem()

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

Результат

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

Тип результата

CoordSystem

count()

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

Результат

Количество

Тип результата

int

dpiPrinter()

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

Результат

Разрешение принтера

Тип результата

int

fillOnPages()

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

Результат

False, если если ничего не делалось и контент не изменился. В противном случае True

Тип результата

bool

frontItem()

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

Результат

Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)

Тип результата

ReportItem

horisontalPagesCount()

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

Результат

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

Тип результата

int

index(item)

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

Параметры

item (ReportItem) – Искомый элемент

Результат

Индекс искомого элемента, или же -1, если элемент не найден

Тип результата

int

insertItem(item, index)

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

Параметры
  • item (ReportItem) – Вставляемый элемент отчета

  • index (int) – Индекс

items()

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

Результат

Список с элементами отчета

Тип результата

list [ReportItem]

moveItem(item, index)

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

Параметры
  • item (ReportItem) – Перемещаемый элемент

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

name()

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

Результат

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

Тип результата

str

needRedrawItem(rect)

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

Параметры

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

progress(value, total)

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

Параметры
  • value (int) – Текущее значение

  • total (int) – Общее количество

rect()

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

Результат

Ограничивающий прямоугольник

Тип результата

QRectF

rectContents()

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

Результат

Ограничивающий прямоугольник

Тип результата

QRectF

removeItem(index)

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

Параметры

index (int) – Индекс удаляемого элемента

removeItem(item)

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

Параметры

item (ReportItem) – Удаляемый элемент

render(context, excludes=[], pages=[])

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

Параметры
  • context (Context) – Контекст, в котором будет отрисован отчет

  • excludes (list [ReportItem]) – Элементы отчета, которые не будут отрисованы

  • pages (list [int]) – Страницы, которые не будут отрисованы

setHorisontalPagesCount(v)

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

Параметры

v (int) – Новое количество страниц

setName(name)

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

Параметры

name (str) – Новое наименование отчета

setOptions(printer)

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

Параметры

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

setVerticalPageCount(v)

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

Параметры

v (int) – Новое количество страниц

sizePage()

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

Результат

Размеры страницы

Тип результата

QSizeF

unit()

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

Результат

Единицы измерения отчета

Тип результата

Unit

verticalPageCount()

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

Результат

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

Тип результата

int

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

# Создание элемента отчета типа геометрический объект
# Текст рассматиривается как геометрия. Пример создания см. 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)