Skip to content

Commit

Permalink
merge hakimel#1955 with minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
hakimel committed Jun 11, 2018
1 parent a861461 commit 3680f1a
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
1 change: 1 addition & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ module.exports = function(grunt) {
eqnull: true,
browser: true,
expr: true,
loopfunc: true,
globals: {
head: false,
module: false,
Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
27 changes: 19 additions & 8 deletions js/reveal.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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' );
} );
}
Expand All @@ -820,7 +832,6 @@

} );


// Notify subscribers that the PDF layout is good to go
dispatchEvent( 'pdf-ready' );

Expand Down

0 comments on commit 3680f1a

Please sign in to comment.