本文整理汇总了Python中qgis.core.QgsLayoutFrame.attemptSetSceneRect方法的典型用法代码示例。如果您正苦于以下问题:Python QgsLayoutFrame.attemptSetSceneRect方法的具体用法?Python QgsLayoutFrame.attemptSetSceneRect怎么用?Python QgsLayoutFrame.attemptSetSceneRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsLayoutFrame
的用法示例。
在下文中一共展示了QgsLayoutFrame.attemptSetSceneRect方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testTableMultiFrame
# 需要导入模块: from qgis.core import QgsLayoutFrame [as 别名]
# 或者: from qgis.core.QgsLayoutFrame import attemptSetSceneRect [as 别名]
def testTableMultiFrame(self):
"""Test we can render to multiframes."""
layout_html = QgsLayoutItemHtml(self.layout)
html_frame = QgsLayoutFrame(self.layout, layout_html)
html_frame.attemptSetSceneRect(QRectF(10, 10, 100, 50))
layout_html.addFrame(html_frame)
layout_html.setResizeMode(
QgsLayoutMultiFrame.RepeatUntilFinished)
layout_html.setUseSmartBreaks(False)
layout_html.setUrl(self.htmlUrl())
layout_html.frame(0).setFrameEnabled(True)
print("Checking page 1")
myPage = 0
checker1 = QgsLayoutChecker('composerhtml_multiframe1', self.layout)
checker1.setControlPathPrefix("composer_html")
myTestResult, myMessage = checker1.testLayout(myPage)
assert myTestResult, myMessage
print("Checking page 2")
myPage = 1
checker2 = QgsLayoutChecker('composerhtml_multiframe2', self.layout)
checker2.setControlPathPrefix("composer_html")
myTestResult, myMessage = checker2.testLayout(myPage)
assert myTestResult, myMessage
self.layout.removeMultiFrame(layout_html)
layout_html = None
assert myTestResult, myMessage
示例2: testTable
# 需要导入模块: from qgis.core import QgsLayoutFrame [as 别名]
# 或者: from qgis.core.QgsLayoutFrame import attemptSetSceneRect [as 别名]
def testTable(self):
"""Test we can render a html table in a single frame."""
layout_html = QgsLayoutItemHtml(self.layout)
html_frame = QgsLayoutFrame(self.layout, layout_html)
html_frame.attemptSetSceneRect(QRectF(0, 0, 100, 200))
html_frame.setFrameEnabled(True)
layout_html.addFrame(html_frame)
layout_html.setUrl(self.htmlUrl())
checker = QgsLayoutChecker('composerhtml_table', self.layout)
checker.setControlPathPrefix("composer_html")
myTestResult, myMessage = checker.testLayout()
qDebug(myMessage)
self.layout.removeMultiFrame(layout_html)
assert myTestResult, myMessage
示例3: qgis_composer_html_renderer
# 需要导入模块: from qgis.core import QgsLayoutFrame [as 别名]
# 或者: from qgis.core.QgsLayoutFrame import attemptSetSceneRect [as 别名]
def qgis_composer_html_renderer(impact_report, component):
"""HTML to PDF renderer using QGIS Composer.
Render using qgis composer for a given impact_report data and component
context for html input.
:param impact_report: ImpactReport contains data about the report that is
going to be generated.
:type impact_report: safe.report.impact_report.ImpactReport
:param component: Contains the component metadata and context for
rendering the output.
:type component:
safe.report.report_metadata.QgisComposerComponentsMetadata
:return: Whatever type of output the component should be.
.. versionadded:: 4.0
"""
context = component.context
# QGIS3: not used
# qgis_composition_context = impact_report.qgis_composition_context
# create new layout with A4 portrait page
layout = QgsPrintLayout(QgsProject.instance())
page = QgsLayoutItemPage(layout)
page.setPageSize('A4', orientation=QgsLayoutItemPage.Portrait)
layout.pageCollection().addPage(page)
if not context.html_frame_elements:
# if no html frame elements at all, do not generate empty report.
component.output = ''
return component.output
# Add HTML Frame
for html_el in context.html_frame_elements:
mode = html_el.get('mode')
html_element = QgsLayoutItemHtml(layout)
margin_left = html_el.get('margin_left', 10)
margin_top = html_el.get('margin_top', 10)
width = html_el.get('width', component.page_width - 2 * margin_left)
height = html_el.get('height', component.page_height - 2 * margin_top)
html_frame = QgsLayoutFrame(layout, html_element)
html_frame.attemptSetSceneRect(
QRectF(margin_left, margin_top, width, height))
html_element.addFrame(html_frame)
if html_element:
if mode == 'text':
text = html_el.get('text')
text = text if text else ''
html_element.setContentMode(QgsLayoutItemHtml.ManualHtml)
html_element.setResizeMode(
QgsLayoutItemHtml.RepeatUntilFinished)
html_element.setHtml(text)
html_element.loadHtml()
elif mode == 'url':
url = html_el.get('url')
html_element.setContentMode(QgsLayoutItemHtml.Url)
html_element.setResizeMode(
QgsLayoutItemHtml.RepeatUntilFinished)
qurl = QUrl.fromLocalFile(url)
html_element.setUrl(qurl)
# Attempt on removing blank page. Notes: We assume that the blank page
# will always appears in the last x page(s), not in the middle.
pc = layout.pageCollection()
index = pc.pageCount()
while pc.pageIsEmpty(index):
pc.deletePage(index)
index -= 1
# process to output
# in case output folder not specified
if impact_report.output_folder is None:
impact_report.output_folder = mkdtemp(dir=temp_dir())
component_output_path = impact_report.component_absolute_output_path(
component.key)
component_output = None
output_format = component.output_format
doc_format = QgisComposerComponentsMetadata.OutputFormat.DOC_OUTPUT
template_format = QgisComposerComponentsMetadata.OutputFormat.QPT
if isinstance(output_format, list):
component_output = []
for i in range(len(output_format)):
each_format = output_format[i]
each_path = component_output_path[i]
if each_format in doc_format:
result_path = create_qgis_pdf_output(
impact_report,
each_path,
layout,
each_format,
#.........这里部分代码省略.........