diff --git a/src/core/qgsabstractgeopdfexporter.cpp b/src/core/qgsabstractgeopdfexporter.cpp index 9b9dcb9a4e74..83907cb36ed7 100644 --- a/src/core/qgsabstractgeopdfexporter.cpp +++ b/src/core/qgsabstractgeopdfexporter.cpp @@ -32,8 +32,29 @@ #include +bool QgsAbstractGeoPdfExporter::geoPDFCreationAvailable() +{ +#if GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(3,0,0) + return false; +#else + return true; +#endif +} + +QString QgsAbstractGeoPdfExporter::geoPDFAvailabilityExplanation() +{ +#if GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(3,0,0) + return QObject::tr( "GeoPDF creation requires GDAL version 3.0 or later." ); +#else + return QString(); +#endif +} + bool QgsAbstractGeoPdfExporter::finalize( const QList &components, const QString &destinationFile ) { +#if GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(3,0,0) + return false; +#else if ( !saveTemporaryLayers() ) return false; @@ -72,6 +93,7 @@ bool QgsAbstractGeoPdfExporter::finalize( const QList &com CSLDestroy( papszOptions ); return res; +#endif } QString QgsAbstractGeoPdfExporter::generateTemporaryFilepath( const QString &filename ) const @@ -79,6 +101,7 @@ QString QgsAbstractGeoPdfExporter::generateTemporaryFilepath( const QString &fil return mTemporaryDir.filePath( filename ); } + void QgsAbstractGeoPdfExporter::pushRenderedFeature( const QString &layerId, const QgsAbstractGeoPdfExporter::RenderedFeature &feature ) { // because map layers may be rendered in parallel, we need a mutex here diff --git a/src/core/qgsabstractgeopdfexporter.h b/src/core/qgsabstractgeopdfexporter.h index 812c2b89a378..0c605bddcf5d 100644 --- a/src/core/qgsabstractgeopdfexporter.h +++ b/src/core/qgsabstractgeopdfexporter.h @@ -50,12 +50,27 @@ class CORE_EXPORT QgsAbstractGeoPdfExporter { public: + /** + * Returns TRUE if the current QGIS build is capable of GeoPDF support. + * + * If FALSE is returned, a user-friendly explanation why can be retrieved via + * geoPDFAvailabilityExplanation(). + */ + static bool geoPDFCreationAvailable(); + + /** + * Returns a user-friendly, translated string explaining why GeoPDF export + * support is not available on the current QGIS build (or an empty string if + * GeoPDF support IS available). + * \see geoPDFCreationAvailable() + */ + static QString geoPDFAvailabilityExplanation(); + /** * Constructor for QgsAbstractGeoPdfExporter. */ QgsAbstractGeoPdfExporter() = default; - virtual ~QgsAbstractGeoPdfExporter() = default; /** @@ -164,8 +179,9 @@ class CORE_EXPORT QgsAbstractGeoPdfExporter QMutex mMutex; QMap< QString, QgsFeatureList > mCollatedFeatures; - - + /** + * Returns the PDF output component details for the layer with given \a layerId. + */ virtual VectorComponentDetail componentDetailForLayerId( const QString &layerId ) = 0; QList< VectorComponentDetail > mVectorComponents;