PDF export: add option to export one page per fragment

This commit is contained in:
Maximilian Köhl 2017-08-08 22:47:10 +02:00
parent 43eada7990
commit a2cf23b30c
1 changed files with 38 additions and 4 deletions

View File

@ -727,14 +727,39 @@
numberElement.innerHTML = formatSlideNumber( slideNumberH, '.', slideNumberV ); numberElement.innerHTML = formatSlideNumber( slideNumberH, '.', slideNumberV );
page.appendChild( numberElement ); page.appendChild( numberElement );
} }
// Copy page and show fragments one after another
if ( isPrintingPDFFragments() ) {
var numberOfFragments = toArray( page.querySelectorAll( '.fragment' ) ).length;
for ( var currentFragment = 0; currentFragment < numberOfFragments; currentFragment++ ) {
var clonedPage = page.cloneNode( true );
page.parentNode.insertBefore( clonedPage, page.nextSibling );
toArray( sortFragments( clonedPage.querySelectorAll( '.fragment' ))).forEach( function ( fragment, fragmentIndex ) {
if ( fragmentIndex <= currentFragment ) {
fragment.classList.add( 'visible' );
} else {
fragment.classList.remove( 'visible' );
}
} );
page = clonedPage;
}
}
// Show all fragments
else {
toArray( page.querySelectorAll( '.fragment' ) ).forEach( function( fragment ) {
fragment.classList.add( 'visible' );
} );
}
} }
} ); } );
// Show all fragments
toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ' .fragment' ) ).forEach( function( fragment ) {
fragment.classList.add( 'visible' );
} );
// Notify subscribers that the PDF layout is good to go // Notify subscribers that the PDF layout is good to go
dispatchEvent( 'pdf-ready' ); dispatchEvent( 'pdf-ready' );
@ -1497,6 +1522,15 @@
} }
/**
* Check if this instance is being used to print a PDF with fragments.
*/
function isPrintingPDFFragments() {
return ( /print-pdf-fragments/gi ).test( window.location.search );
}
/** /**
* Hides the address bar if we're on a mobile device. * Hides the address bar if we're on a mobile device.
*/ */