Report¶
-
class
axioma.render.
Report
¶ План отчета для последующей печати.
-
Report
(parent=None)¶ Конструктор
- Параметры
parent (
QObject
) – Владелец элемента легенды. При удалении владельца так же удаляется и сам элемент
-
addItem
(item)¶ Вставка нового элемента в отчет
- Параметры
item (
ReportItem
) – Вставляемый элемент
-
at
(index)¶ Получение элемента отчета по его индексу.
-
backItem
()¶ Последний элемент отчета
- Результат
Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)
- Тип результата
-
coordSystem
()¶ Координатная система отчета
- Результат
Координатная система отчета
- Тип результата
-
count
()¶ Количество элементов отчета в текущем отчете на данный момент
- Результат
Количество
- Тип результата
-
dpiPrinter
()¶ Разрешение принтера. Инициализируется при передаче объекта принтера в метод setOptions
- Результат
Разрешение принтера
- Тип результата
-
fillOnPages
()¶ Максимально заполняет страницу(ы) отчета существующими элементами
- Результат
False, если если ничего не делалось и контент не изменился. В противном случае True
- Тип результата
-
frontItem
()¶ Первый элемент отчета
- Результат
Элемент отчета. Возвращает None в случае, если не найдено (отчет не содержит ни одного элемента)
- Тип результата
-
horisontalPagesCount
()¶ Количество страниц отчета по горизонтали
- Результат
Количество страниц
- Тип результата
-
index
(item)¶ Получение индекса элемента по значению
- Параметры
item (
ReportItem
) – Искомый элемент- Результат
Индекс искомого элемента, или же -1, если элемент не найден
- Тип результата
-
insertItem
(item, index)¶ Вставка нового элемента в отчет на конкретную позицию.
- Параметры
item (
ReportItem
) – Вставляемый элемент отчетаindex (
int
) – Индекс
-
items
()¶ Получение текущего списка элементов отчета
- Результат
Список с элементами отчета
- Тип результата
-
moveItem
(item, index)¶ Перемещение существующего элемента на новую позицию, если элемент и позиция указаны корректно
- Параметры
item (
ReportItem
) – Перемещаемый элементindex (
int
) – Индекс, указывающий позицию, куда необходимо переместить элемент
-
needRedrawItem
(rect)¶ [signal] Сигнал, возникающий при необходимости перерисовки части отчета
- Параметры
rect (
QRectF
) – Прямоугольник для обновления
-
progress
(value, total)¶ [signal] Сигнал, возникающий при изменении прогресса выполнения
-
rect
()¶ Ограничивающий прямоугольник общего пространства отчета. Здесь возвращается простое произведение размера одной страницы на их количество
- Результат
Ограничивающий прямоугольник
- Тип результата
-
rectContents
()¶ Ограничивающий прямоугольник по существующим в рамках отчета элементам отчета
- Результат
Ограничивающий прямоугольник
- Тип результата
-
removeItem
(index)¶ Удаление элемента по его индексу. Если индекс корректен, элемент будет удален.
- Параметры
index (
int
) – Индекс удаляемого элемента
-
removeItem
(item)¶ Удаление элемента из отчета
- Параметры
item (
ReportItem
) – Удаляемый элемент
-
render
(context, excludes=[], pages=[])¶ Отрисовка отчета в заданном контексте
- Параметры
context (
Context
) – Контекст, в котором будет отрисован отчетexcludes (
list
[ReportItem
]) – Элементы отчета, которые не будут отрисованы
-
setHorisontalPagesCount
(v)¶ Установка количества страниц по горизонтали
- Параметры
v (
int
) – Новое количество страниц
-
setName
(name)¶ Задание нового значения наименования отчета
- Параметры
name (
str
) – Новое наименование отчета
-
setOptions
(printer)¶ Инициализация размеров страницы по переданному объекту принтера.
- Параметры
printer (
QPrinter
) – Объект принтера, по параметрам которого производится инициализация
-
setVerticalPageCount
(v)¶ Установка количества страниц по вертикали
- Параметры
v (
int
) – Новое количество страниц
-
unit
()¶ Единицы измерения отчета, в которых хранятся элементы ReportItem
- Результат
Единицы измерения отчета
- Тип результата
-
Пример использования:
# Создание элемента отчета типа геометрический объект # Текст рассматиривается как геометрия. Пример создания см. 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)