Skip to content

Commit

Permalink
Fix raster layer names in GeoPDF exports are lost
Browse files Browse the repository at this point in the history
Fixes #33306
  • Loading branch information
nyalldawson committed Jun 4, 2020
1 parent f4e5810 commit d864dc8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/core/qgsmaprenderertask.cpp
Expand Up @@ -184,7 +184,8 @@ bool QgsMapRendererTask::run()
while ( !job->isFinished() )
{
QgsAbstractGeoPdfExporter::ComponentLayerDetail component;
component.name = QStringLiteral( "layer_%1" ).arg( outputLayer );

component.name = mLayerIdToLayerNameMap.value( job->currentLayerId(), QStringLiteral( "layer_%1" ).arg( outputLayer ) );
component.mapLayerId = job->currentLayerId();
component.sourcePdfPath = mGeoPdfExporter->generateTemporaryFilepath( QStringLiteral( "layer_%1.pdf" ).arg( outputLayer ) );
pdfComponents << component;
Expand Down Expand Up @@ -445,6 +446,13 @@ void QgsMapRendererTask::prepare()
mRenderedFeatureHandler = qgis::make_unique< QgsMapRendererTaskRenderedFeatureHandler >( static_cast< QgsMapRendererTaskGeoPdfExporter * >( mGeoPdfExporter.get() ), mMapSettings );
mMapSettings.addRenderedFeatureHandler( mRenderedFeatureHandler.get() );
}

const QList< QgsMapLayer * > layers = mMapSettings.layers();
for ( const QgsMapLayer *layer : layers )
{
mLayerIdToLayerNameMap.insert( layer->id(), layer->name() );
}

mJob.reset( new QgsMapRendererStagedRenderJob( mMapSettings, QgsMapRendererStagedRenderJob::RenderLabelsByMapLayer ) );
mJob->start();
return;
Expand Down
1 change: 1 addition & 0 deletions src/core/qgsmaprenderertask.h
Expand Up @@ -156,6 +156,7 @@ class CORE_EXPORT QgsMapRendererTask : public QgsTask

QList< QgsAnnotation * > mAnnotations;
QList< QgsMapDecoration * > mDecorations;
QMap< QString, QString> mLayerIdToLayerNameMap;

int mError = 0;

Expand Down

0 comments on commit d864dc8

Please sign in to comment.