new cli and in-browser pdf printing compatible fix for #1804

This commit is contained in:
Hakim El Hattab 2017-04-04 13:37:01 +02:00
parent 3ea7e2ff59
commit 2584a6d970
2 changed files with 14 additions and 5 deletions

View file

@ -87,14 +87,14 @@ ul, ol, div, p {
position: relative; position: relative;
overflow: hidden; overflow: hidden;
z-index: 1; z-index: 1;
page-break-after: always;
} }
.reveal .slides section { .reveal .slides section {
page-break-after: always !important;
visibility: visible !important; visibility: visible !important;
display: block !important; display: block !important;
position: relative !important; position: absolute !important;
margin: 0 !important; margin: 0 !important;
padding: 0 !important; padding: 0 !important;
@ -115,6 +115,7 @@ ul, ol, div, p {
} }
.reveal section.stack { .reveal section.stack {
position: relative !important;
margin: 0 !important; margin: 0 !important;
padding: 0 !important; padding: 0 !important;
page-break-after: avoid !important; page-break-after: avoid !important;

View file

@ -617,7 +617,7 @@
slideHeight = slideSize.height; slideHeight = slideSize.height;
// Let the browser know what page size we want to print // Let the browser know what page size we want to print
injectStyleSheet( '@page{size:'+ pageWidth +'px '+ pageHeight +'px; margin: 0 0 -1px 0;}' ); injectStyleSheet( '@page{size:'+ pageWidth +'px '+ pageHeight +'px; margin: 0px;}' );
// Limit the size of certain elements to the dimensions of the slide // Limit the size of certain elements to the dimensions of the slide
injectStyleSheet( '.reveal section>img, .reveal section>video, .reveal section>iframe{max-width: '+ slideWidth +'px; max-height:'+ slideHeight +'px}' ); injectStyleSheet( '.reveal section>img, .reveal section>video, .reveal section>iframe{max-width: '+ slideWidth +'px; max-height:'+ slideHeight +'px}' );
@ -664,7 +664,15 @@
// so that no page ever flows onto another // so that no page ever flows onto another
var page = document.createElement( 'div' ); var page = document.createElement( 'div' );
page.className = 'pdf-page'; page.className = 'pdf-page';
page.style.height = ( pageHeight * numberOfPages ) + 'px';
// Set the total height of the PDF page container.
//
// This is offset by -1 to ensure that the page ends and
// breaks within the document/paper height. Ending exactly
// on the document height breaks in-browser printing, but
// works in CLI printing (phantomjs, wkpdf etc]).
page.style.height = ( ( pageHeight - 1 ) * numberOfPages ) + 'px';
slide.parentNode.insertBefore( page, slide ); slide.parentNode.insertBefore( page, slide );
page.appendChild( slide ); page.appendChild( slide );