16#ifndef QGSLAYOUTEXPORTER_H
17#define QGSLAYOUTEXPORTER_H
33#if defined( HAVE_QTPRINTER )
100 void renderPage( QPainter *painter,
int page )
const;
120 QImage renderPageToImage(
int page, QSize imageSize = QSize(),
double dpi = -1 )
const;
129 void renderRegion( QPainter *painter,
const QRectF ®ion )
const;
147 QImage renderRegionToImage(
const QRectF ®ion, QSize imageSize = QSize(),
double dpi = -1 )
const;
191 bool cropToContents =
false;
212 bool generateWorldFile =
false;
220 bool exportMetadata =
true;
226 QgsLayoutRenderContext::Flags flags = QgsLayoutRenderContext::Flags();
281 bool rasterizeWholeImage =
false;
290 bool forceVectorOutput =
false;
297 bool appendGeoreference =
true;
305 bool exportMetadata =
true;
310 QgsLayoutRenderContext::Flags flags = QgsLayoutRenderContext::Flags();
326 bool simplifyGeometries =
true;
339 bool writeGeoPdf =
false;
354 bool exportLayersAsSeperateFiles =
false;
364 bool useIso32000ExtensionFormatGeoreferencing =
true;
375 bool useOgcBestPracticeFormatGeoreferencing =
false;
382 bool includeGeoPdfFeatures =
true;
458 bool rasterizeWholeImage =
false;
463 QgsLayoutRenderContext::Flags flags = QgsLayoutRenderContext::Flags();
474#if defined( HAVE_QTPRINTER )
517 bool forceVectorOutput =
false;
523 bool cropToContents =
false;
536 bool exportAsLayers =
false;
546 bool exportLabelsToSeparateLayers =
true;
554 bool exportMetadata =
true;
559 QgsLayoutRenderContext::Flags flags = QgsLayoutRenderContext::Flags();
575 bool simplifyGeometries =
true;
621 QMap< QString, QgsLabelingResults * > labelingResults();
634 QMap< QString, QgsLabelingResults * > takeLabelingResults();
652 bool georeferenceOutput(
const QString &file,
QgsLayoutItemMap *referenceMap =
nullptr,
653 const QRectF &exportRegion = QRectF(),
double dpi = -1 )
const;
661 void computeWorldFileParameters(
double &a,
double &b,
double &
c,
double &d,
double &e,
double &f,
double dpi = -1 )
const;
668 void computeWorldFileParameters(
const QRectF ®ion,
double &a,
double &b,
double &
c,
double &d,
double &e,
double &f,
double dpi = -1 )
const;
678 static bool requiresRasterization(
const QgsLayout *layout );
687 static bool containsAdvancedEffects(
const QgsLayout *layout );
696 virtual QString generateFileName(
const PageExportDetails &details )
const;
700 QPointer< QgsLayout > mLayout;
702 void captureLabelingResults();
703 QMap< QString, QgsLabelingResults * > mLabelingResults;
705 mutable QString mErrorFileName;
707 QImage createImage(
const ImageExportSettings &settings,
int page, QRectF &bounds,
bool &skipPage )
const;
713 static int firstPageToBeExported(
QgsLayout *layout );
718 static bool saveImage(
const QImage &image,
const QString &imageFilename,
const QString &imageFormat,
QgsProject *projectForMetadata );
733 std::unique_ptr<double[]> computeGeoTransform(
const QgsLayoutItemMap *referenceMap =
nullptr,
const QRectF &exportRegion = QRectF(),
double dpi = -1 )
const;
736 void writeWorldFile(
const QString &fileName,
double a,
double b,
double c,
double d,
double e,
double f )
const;
741 static void preparePrintAsPdf(
QgsLayout *layout, QPagedPaintDevice *device,
const QString &filePath );
743 static void preparePrint(
QgsLayout *layout, QPagedPaintDevice *device,
bool setFirstPageSize =
false );
748 ExportResult print( QPagedPaintDevice *device );
758 ExportResult printPrivate( QPagedPaintDevice *device, QPainter &painter,
bool startNewPage =
false,
double dpi = -1,
bool rasterize =
false );
760 static void updatePrinterPageSize(
QgsLayout *layout, QPagedPaintDevice *device,
int page );
762 ExportResult renderToLayeredSvg(
const SvgExportSettings &settings,
double width,
double height,
int page,
const QRectF &bounds,
763 const QString &filename,
unsigned int svgLayerId,
const QString &layerName,
764 QDomDocument &svg, QDomNode &svgDocRoot,
bool includeMetadata )
const;
766 void appendMetadataToSvg( QDomDocument &svg )
const;
768 bool georeferenceOutputPrivate(
const QString &file,
QgsLayoutItemMap *referenceMap =
nullptr,
769 const QRectF &exportRegion = QRectF(),
double dpi = -1,
bool includeGeoreference =
true,
bool includeMetadata =
false )
const;
774 friend class TestQgsLayout;
775 friend class TestQgsLayoutExporter;
TextRenderFormat
Flags which control how map layer renderers behave.
@ AlwaysOutlines
Always render text using path objects (AKA outlines/curves). This setting guarantees the best quality...
An abstract base class for QgsLayout based classes which can be exported by QgsLayoutExporter.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Class that stores computed placement from labeling engine.
Handles rendering and exports of layouts to various formats.
ExportResult
Result codes for exporting layouts.
@ Canceled
Export was canceled.
@ MemoryError
Unable to allocate memory required to export.
@ PrintError
Could not start printing to destination device.
@ IteratorError
Error iterating over layout.
@ FileError
Could not write to destination file, likely due to a lock held by another application.
@ Success
Export was successful.
@ SvgLayerError
Could not create layered SVG file.
QString errorFile() const
Returns the file name corresponding to the last error encountered during an export.
Layout graphical items for displaying a map.
Stores information relating to the current rendering settings for a layout.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
The QgsMargins class defines the four margins of a rectangle.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
A boolean settings entry.
This class contains information how to simplify geometries fetched from a vector layer.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
#define SIP_IF_FEATURE(feature)
Contains settings relating to exporting layouts to raster images.
QgsMargins cropMargins
Crop to content margins, in pixels.
QList< int > pages
List of specific pages to export, or an empty list to export all pages.
QSize imageSize
Manual size in pixels for output image.
ImageExportSettings()
Constructor for ImageExportSettings.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
Contains details of a page being exported by the class.
QString baseName
Base part of filename (i.e. file name without extension or '.')
QString extension
File suffix/extension (without the leading '.')
QString directory
Target folder.
Contains settings relating to exporting layouts to PDF.
QStringList exportThemes
Optional list of map themes to export as GeoPDF layer groups.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
PdfExportSettings()
Constructor for PdfExportSettings.
Contains settings relating to printing layouts.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
PrintExportSettings()
Constructor for PrintExportSettings.
Contains settings relating to exporting layouts to SVG.
SvgExportSettings()
Constructor for SvgExportSettings.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
QgsMargins cropMargins
Crop to content margins, in layout units.
Contains details of a particular export layer relating to a layout item.