16#ifndef QGSLAYOUTEXPORTER_H
17#define QGSLAYOUTEXPORTER_H
33#if defined( HAVE_QTPRINTER )
104 void renderPage( QPainter *painter,
int page )
const;
124 QImage renderPageToImage(
int page, QSize imageSize = QSize(),
double dpi = -1 )
const;
133 void renderRegion( QPainter *painter,
const QRectF ®ion )
const;
151 QImage renderRegionToImage(
const QRectF ®ion, QSize imageSize = QSize(),
double dpi = -1 )
const;
170 : flags(
Qgis::LayoutRenderFlag::Antialiasing |
Qgis::LayoutRenderFlag::UseAdvancedEffects )
194 bool cropToContents =
false;
215 bool generateWorldFile =
false;
223 bool exportMetadata =
true;
278 : flags(
Qgis::LayoutRenderFlag::Antialiasing |
Qgis::LayoutRenderFlag::UseAdvancedEffects )
289 bool rasterizeWholeImage =
false;
298 bool forceVectorOutput =
false;
305 bool appendGeoreference =
true;
313 bool exportMetadata =
true;
334 bool simplifyGeometries =
true;
347 bool writeGeoPdf =
false;
362 bool exportLayersAsSeperateFiles =
false;
372 bool useIso32000ExtensionFormatGeoreferencing =
true;
385 bool useOgcBestPracticeFormatGeoreferencing =
false;
392 bool includeGeoPdfFeatures =
true;
456 : flags(
Qgis::LayoutRenderFlag::Antialiasing |
Qgis::LayoutRenderFlag::UseAdvancedEffects )
467 bool rasterizeWholeImage =
false;
483#if defined( HAVE_QTPRINTER )
512 : flags(
Qgis::LayoutRenderFlag::Antialiasing |
Qgis::LayoutRenderFlag::UseAdvancedEffects )
525 bool forceVectorOutput =
false;
531 bool cropToContents =
false;
544 bool exportAsLayers =
false;
554 bool exportLabelsToSeparateLayers =
true;
562 bool exportMetadata =
true;
583 bool simplifyGeometries =
true;
636 QMap< QString, QgsLabelingResults * > labelingResults();
649 QMap< QString, QgsLabelingResults * > takeLabelingResults();
667 bool georeferenceOutput(
const QString &file,
QgsLayoutItemMap *referenceMap =
nullptr,
668 const QRectF &exportRegion = QRectF(),
double dpi = -1 )
const;
676 void computeWorldFileParameters(
double &a,
double &b,
double &
c,
double &d,
double &e,
double &f,
double dpi = -1 )
const;
683 void computeWorldFileParameters(
const QRectF ®ion,
double &a,
double &b,
double &
c,
double &d,
double &e,
double &f,
double dpi = -1 )
const;
693 static bool requiresRasterization(
const QgsLayout *layout );
702 static bool containsAdvancedEffects(
const QgsLayout *layout );
711 virtual QString generateFileName(
const PageExportDetails &details )
const;
715 QPointer< QgsLayout > mLayout;
717 void captureLabelingResults();
718 QMap< QString, QgsLabelingResults * > mLabelingResults;
720 mutable QString mErrorFileName;
721 mutable QString mErrorMessage;
723 QImage createImage(
const ImageExportSettings &settings,
int page, QRectF &bounds,
bool &skipPage )
const;
729 static int firstPageToBeExported(
QgsLayout *layout );
734 static bool saveImage(
const QImage &image,
const QString &imageFilename,
const QString &imageFormat,
QgsProject *projectForMetadata,
int quality = -1 );
749 std::unique_ptr<double[]> computeGeoTransform(
const QgsLayoutItemMap *referenceMap =
nullptr,
const QRectF &exportRegion = QRectF(),
double dpi = -1 )
const;
752 void writeWorldFile(
const QString &fileName,
double a,
double b,
double c,
double d,
double e,
double f )
const;
757 static void preparePrintAsPdf(
QgsLayout *layout, QPdfWriter *device,
const QString &filePath );
759 static void preparePrint(
QgsLayout *layout, QPagedPaintDevice *device,
bool setFirstPageSize =
false );
764 ExportResult print( QPagedPaintDevice *device );
774 ExportResult printPrivate( QPagedPaintDevice *device, QPainter &painter,
bool startNewPage =
false,
double dpi = -1,
bool rasterize =
false );
776 static void updatePrinterPageSize(
QgsLayout *layout, QPagedPaintDevice *device,
int page );
778 ExportResult renderToLayeredSvg(
const SvgExportSettings &settings,
double width,
double height,
int page,
const QRectF &bounds,
779 const QString &filename,
unsigned int svgLayerId,
const QString &layerName,
780 QDomDocument &svg, QDomNode &svgDocRoot,
bool includeMetadata )
const;
782 void appendMetadataToSvg( QDomDocument &svg )
const;
784 bool georeferenceOutputPrivate(
const QString &file,
QgsLayoutItemMap *referenceMap =
nullptr,
785 const QRectF &exportRegion = QRectF(),
double dpi = -1,
bool includeGeoreference =
true,
bool includeMetadata =
false )
const;
787 ExportResult handleLayeredExport(
const QList<QGraphicsItem *> &items,
789 const std::function<QString(
QgsLayoutItem *item )> &getItemExportGroupFunc
793 static QString getCreator();
796 static void setXmpMetadata( QPdfWriter *pdfWriter,
QgsLayout *layout );
800 friend class TestQgsLayout;
801 friend class TestQgsLayoutExporter;
Provides global constants and enumerations for use throughout the application.
QFlags< LayoutRenderFlag > LayoutRenderFlags
Flags for controlling how a layout is rendered.
TextRenderFormat
Options for rendering text.
@ 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.
Stores computed placement from labeling engine.
Handles rendering and exports of layouts to various formats.
QString errorMessage() const
Returns a string describing the last error encountered during an export.
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.
Base class for graphical items within a QgsLayout.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Defines the four margins of a rectangle.
Contains settings regarding how masks are calculated and handled during a map render.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
A boolean settings entry.
An integer settings entry.
Contains settings for simplifying 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.
Qgis::LayoutRenderFlags flags
Layout context flags, which control how the export will be created.
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 Geospatial PDF layer groups.
Qgis::LayoutRenderFlags flags
Layout context flags, which control how the export will be created.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
Contains settings relating to printing layouts.
QVector< qreal > predefinedMapScales
A list of predefined scales to use with the layout.
Qgis::LayoutRenderFlags flags
Layout context flags, which control how the export will be created.
Contains settings relating to exporting layouts to SVG.
Qgis::LayoutRenderFlags flags
Layout context flags, which control how the export will be created.
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.