Skip to content

Commit fedb1d8

Browse files
committed
Fix atlas print for png and svg format (just give back first page)
1 parent 22e54ba commit fedb1d8

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

src/server/services/wms/qgswmsrenderer.cpp

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)