@@ -459,14 +459,8 @@ namespace QgsWms
459459
460460 }
461461
462- if ( atlas )
463- {
464- QgsLayoutExporter exporter ( layout.get () );
465- QgsLayoutExporter::PdfExportSettings exportSettings;
466- QString error;
467- exporter.exportToPdf ( atlas, tempOutputFile.fileName (), exportSettings, error );
468- }
469- else if ( formatString.compare ( QLatin1String ( " svg" ), Qt::CaseInsensitive ) == 0 )
462+ QString exportError;
463+ if ( formatString.compare ( QLatin1String ( " svg" ), Qt::CaseInsensitive ) == 0 )
470464 {
471465 // Settings for the layout exporter
472466 QgsLayoutExporter::SvgExportSettings exportSettings;
@@ -479,8 +473,21 @@ namespace QgsWms
479473 }
480474 // Draw selections
481475 exportSettings.flags |= QgsLayoutRenderContext::FlagDrawSelection;
482- QgsLayoutExporter exporter ( layout.get () );
483- exporter.exportToSvg ( tempOutputFile.fileName (), exportSettings );
476+ if ( atlas )
477+ {
478+ // export first page of atlas
479+ atlas->beginRender ();
480+ if ( atlas->next () )
481+ {
482+ QgsLayoutExporter atlasSvgExport ( atlas->layout () );
483+ atlasSvgExport.exportToSvg ( tempOutputFile.fileName (), exportSettings );
484+ }
485+ }
486+ else
487+ {
488+ QgsLayoutExporter exporter ( layout.get () );
489+ exporter.exportToSvg ( tempOutputFile.fileName (), exportSettings );
490+ }
484491 }
485492 else if ( formatString.compare ( QLatin1String ( " png" ), Qt::CaseInsensitive ) == 0 || formatString.compare ( QLatin1String ( " jpg" ), Qt::CaseInsensitive ) == 0 )
486493 {
@@ -505,8 +512,21 @@ namespace QgsWms
505512 exportSettings.imageSize = QSize ( static_cast <int >( width.length () * dpi / 25.4 ), static_cast <int >( height.length () * dpi / 25.4 ) );
506513 // Export first page only (unless it's a pdf, see below)
507514 exportSettings.pages .append ( 0 );
508- QgsLayoutExporter exporter ( layout.get () );
509- exporter.exportToImage ( tempOutputFile.fileName (), exportSettings );
515+ if ( atlas )
516+ {
517+ // only can give back one page in server rendering
518+ atlas->beginRender ();
519+ if ( atlas->next () )
520+ {
521+ QgsLayoutExporter atlasPngExport ( atlas->layout () );
522+ atlasPngExport.exportToImage ( tempOutputFile.fileName (), exportSettings );
523+ }
524+ }
525+ else
526+ {
527+ QgsLayoutExporter exporter ( layout.get () );
528+ exporter.exportToImage ( tempOutputFile.fileName (), exportSettings );
529+ }
510530 }
511531 else if ( formatString.compare ( QLatin1String ( " pdf" ), Qt::CaseInsensitive ) == 0 )
512532 {
@@ -524,7 +544,14 @@ namespace QgsWms
524544 exportSettings.flags |= QgsLayoutRenderContext::FlagDrawSelection;
525545 // Export all pages
526546 QgsLayoutExporter exporter ( layout.get () );
527- exporter.exportToPdf ( tempOutputFile.fileName (), exportSettings );
547+ if ( atlas )
548+ {
549+ exporter.exportToPdf ( atlas, tempOutputFile.fileName (), exportSettings, exportError );
550+ }
551+ else
552+ {
553+ exporter.exportToPdf ( tempOutputFile.fileName (), exportSettings );
554+ }
528555 }
529556 else // unknown format
530557 {
0 commit comments