merge #1955 with minor changes

This commit is contained in:
Hakim El Hattab 2018-06-11 12:35:11 +02:00
parent a86146180f
commit 3680f1ad10
3 changed files with 25 additions and 8 deletions

View File

@ -78,6 +78,7 @@ module.exports = function(grunt) {
eqnull: true,
browser: true,
expr: true,
loopfunc: true,
globals: {
head: false,
module: false,

View File

@ -947,6 +947,11 @@ Reveal.initialize({
Presentations can be exported to PDF via a special print stylesheet. This feature requires that you use [Google Chrome](http://google.com/chrome) or [Chromium](https://www.chromium.org/Home) and to be serving the presentation from a webserver.
Here's an example of an exported presentation that's been uploaded to SlideShare: http://www.slideshare.net/hakimel/revealjs-300.
### Separate pages for fragments
[Fragments](#fragments) are printed on separate slides by default. Meaning if you have a slide with three fragment steps, it will generate three separate slides where the fragments appear incrementally.
If you prefer printing all fragments in their visible states on the same slide you can set the `pdfSeparateFragments` config option to false.
### Page size
Export dimensions are inferred from the configured [presentation size](#presentation-size). Slides that are too tall to fit within a single page will expand onto multiple pages. You can limit how many pages a slide may expand onto using the `pdfMaxPagesPerSlide` config option, for example `Reveal.configure({ pdfMaxPagesPerSlide: 1 })` ensures that no slide ever grows to more than one printed page.

View File

@ -204,6 +204,9 @@
// to PDF, unlimited by default
pdfMaxPagesPerSlide: Number.POSITIVE_INFINITY,
// Prints each fragment on a separate slide
pdfSeparateFragments: true,
// Offset used to reduce the height of content within exported PDF pages.
// This exists to account for environment differences based on how you
// print to PDF. CLI printing options, like phantomjs and wkpdf, can end
@ -789,29 +792,38 @@
}
// Copy page and show fragments one after another
if ( isPrintingPDFFragments() ) {
if( config.pdfSeparateFragments ) {
var numberOfFragments = toArray( page.querySelectorAll( '.fragment' ) ).length;
for ( var currentFragment = 0; currentFragment < numberOfFragments; currentFragment++ ) {
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 ) {
toArray( sortFragments( clonedPage.querySelectorAll( '.fragment' ) ) ).forEach( function( fragment, fragmentIndex ) {
if( fragmentIndex < currentFragment ) {
fragment.classList.add( 'visible' );
} else {
fragment.classList.remove( 'visible' );
fragment.classList.remove( 'current-fragment' );
}
else if( fragmentIndex === currentFragment ) {
fragment.classList.add( 'visible', 'current-fragment' );
}
else {
fragment.classList.remove( 'visible', 'current-fragment' );
}
} );
page = clonedPage;
}
}
// Show all fragments
else {
toArray( page.querySelectorAll( '.fragment' ) ).forEach( function( fragment ) {
toArray( page.querySelectorAll( '.fragment:not(.fade-out)' ) ).forEach( function( fragment ) {
fragment.classList.add( 'visible' );
} );
}
@ -820,7 +832,6 @@
} );
// Notify subscribers that the PDF layout is good to go
dispatchEvent( 'pdf-ready' );