Commit 3680f1ad authored by Hakim El Hattab's avatar Hakim El Hattab

merge #1955 with minor changes

parent a8614618
......@@ -78,6 +78,7 @@ module.exports = function(grunt) {
eqnull: true,
browser: true,
expr: true,
loopfunc: true,
globals: {
head: false,
module: false,
......
......@@ -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.
......
......@@ -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' );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment