|
@@ -55,6 +55,9 @@ export default class Print {
|
|
slideScrollHeights.push( slide.scrollHeight );
|
|
slideScrollHeights.push( slide.scrollHeight );
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ const pages = [];
|
|
|
|
+ const pageContainer = slides[0].parentNode;
|
|
|
|
+
|
|
// Slide and slide background layout
|
|
// Slide and slide background layout
|
|
slides.forEach( function( slide, index ) {
|
|
slides.forEach( function( slide, index ) {
|
|
|
|
|
|
@@ -79,9 +82,10 @@ export default class Print {
|
|
// Wrap the slide in a page element and hide its overflow
|
|
// Wrap the slide in a page element and hide its overflow
|
|
// so that no page ever flows onto another
|
|
// so that no page ever flows onto another
|
|
const page = document.createElement( 'div' );
|
|
const page = document.createElement( 'div' );
|
|
|
|
+ pages.push( page );
|
|
|
|
+
|
|
page.className = 'pdf-page';
|
|
page.className = 'pdf-page';
|
|
page.style.height = ( ( pageHeight + config.pdfPageHeightOffset ) * numberOfPages ) + 'px';
|
|
page.style.height = ( ( pageHeight + config.pdfPageHeightOffset ) * numberOfPages ) + 'px';
|
|
- slide.parentNode.insertBefore( page, slide );
|
|
|
|
page.appendChild( slide );
|
|
page.appendChild( slide );
|
|
|
|
|
|
// Position the slide inside of the page
|
|
// Position the slide inside of the page
|
|
@@ -109,7 +113,7 @@ export default class Print {
|
|
notesElement.innerHTML = notes;
|
|
notesElement.innerHTML = notes;
|
|
|
|
|
|
if( notesLayout === 'separate-page' ) {
|
|
if( notesLayout === 'separate-page' ) {
|
|
- page.parentNode.insertBefore( notesElement, page.nextSibling );
|
|
|
|
|
|
+ pages.push( notesElement );
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
notesElement.style.left = notesSpacing + 'px';
|
|
notesElement.style.left = notesSpacing + 'px';
|
|
@@ -141,7 +145,6 @@ export default class Print {
|
|
const fragmentGroups = this.Reveal.fragments.sort( page.querySelectorAll( '.fragment' ), true );
|
|
const fragmentGroups = this.Reveal.fragments.sort( page.querySelectorAll( '.fragment' ), true );
|
|
|
|
|
|
let previousFragmentStep;
|
|
let previousFragmentStep;
|
|
- let previousPage;
|
|
|
|
|
|
|
|
fragmentGroups.forEach( function( fragments ) {
|
|
fragmentGroups.forEach( function( fragments ) {
|
|
|
|
|
|
@@ -159,10 +162,9 @@ export default class Print {
|
|
|
|
|
|
// Create a separate page for the current fragment state
|
|
// Create a separate page for the current fragment state
|
|
let clonedPage = page.cloneNode( true );
|
|
let clonedPage = page.cloneNode( true );
|
|
- page.parentNode.insertBefore( clonedPage, ( previousPage || page ).nextSibling );
|
|
|
|
|
|
+ pages.push( clonedPage );
|
|
|
|
|
|
previousFragmentStep = fragments;
|
|
previousFragmentStep = fragments;
|
|
- previousPage = clonedPage;
|
|
|
|
|
|
|
|
}, this );
|
|
}, this );
|
|
|
|
|
|
@@ -185,6 +187,11 @@ export default class Print {
|
|
|
|
|
|
}, this );
|
|
}, this );
|
|
|
|
|
|
|
|
+ await new Promise(requestAnimationFrame);
|
|
|
|
+ pages.forEach( function( page ) {
|
|
|
|
+ pageContainer.appendChild( page );
|
|
|
|
+ })
|
|
|
|
+
|
|
// Notify subscribers that the PDF layout is good to go
|
|
// Notify subscribers that the PDF layout is good to go
|
|
this.Reveal.dispatchEvent({ type: 'pdf-ready' });
|
|
this.Reveal.dispatchEvent({ type: 'pdf-ready' });
|
|
|
|
|
|
@@ -199,4 +206,4 @@ export default class Print {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-}
|
|
|
|
|
|
+}
|