Skip to content

Commit 692d0f5

Browse files
committedAug 12, 2014
[composer] Ensure that data defined page size and orientation is correctly set when printing directly from an atlas. (Note that mixed orientation prints are unsupported on some platforms/print drivers)
1 parent ffd3f88 commit 692d0f5

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed
 

‎src/app/composer/qgscomposer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,12 +1590,12 @@ void QgsComposer::printComposition( QgsComposer::OutputMode mode )
15901590
QgsAtlasComposition* atlasMap = &mComposition->atlasComposition();
15911591
if ( mode == QgsComposer::Single )
15921592
{
1593-
mComposition->print( mPrinter );
1593+
mComposition->print( mPrinter, true );
15941594
}
15951595
else
15961596
{
15971597

1598-
mComposition->beginPrint( mPrinter );
1598+
mComposition->beginPrint( mPrinter, true );
15991599
QPainter painter( &mPrinter );
16001600

16011601
loadAtlasPredefinedScalesFromProject();

‎src/core/composer/qgscomposition.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2507,19 +2507,27 @@ void QgsComposition::doPrint( QPrinter& printer, QPainter& p, bool startNewPage
25072507
}
25082508
}
25092509

2510-
void QgsComposition::beginPrint( QPrinter &printer )
2510+
void QgsComposition::beginPrint( QPrinter &printer, const bool evaluateDDPageSize )
25112511
{
25122512
//set resolution based on composer setting
25132513
printer.setFullPage( true );
25142514
printer.setColorMode( QPrinter::Color );
25152515

25162516
//set user-defined resolution
25172517
printer.setResolution( printResolution() );
2518+
2519+
if ( evaluateDDPageSize )
2520+
{
2521+
//set data defined page size
2522+
refreshPageSize();
2523+
printer.setPaperSize( QSizeF( paperWidth(), paperHeight() ), QPrinter::Millimeter );
2524+
printer.setOrientation( paperWidth() > paperHeight() ? QPrinter::Landscape : QPrinter::Portrait );
2525+
}
25182526
}
25192527

2520-
bool QgsComposition::print( QPrinter &printer )
2528+
bool QgsComposition::print( QPrinter &printer, const bool evaluateDDPageSize )
25212529
{
2522-
beginPrint( printer );
2530+
beginPrint( printer, evaluateDDPageSize );
25232531
QPainter p;
25242532
bool ready = p.begin( &printer );
25252533
if ( !ready )

‎src/core/composer/qgscomposition.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene
489489
//printing
490490

491491
/** Prepare the printer for printing */
492-
void beginPrint( QPrinter& printer );
492+
void beginPrint( QPrinter& printer, const bool evaluateDDPageSize = false );
493493
/** Prepare the printer for printing in a PDF */
494494
void beginPrintAsPDF( QPrinter& printer, const QString& file );
495495

@@ -503,7 +503,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene
503503
/**Convenience function that prepares the printer and prints
504504
* @returns true if print was successful
505505
*/
506-
bool print( QPrinter &printer );
506+
bool print( QPrinter &printer, const bool evaluateDDPageSize = false );
507507

508508
/**Convenience function that prepares the printer for printing in PDF and prints
509509
* @returns true if export was successful

0 commit comments

Comments
 (0)
Please sign in to comment.