浏览代码

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

Hakim El Hattab 8 年之前
父节点
当前提交
2584a6d970
共有 2 个文件被更改,包括 14 次插入5 次删除
  1. 4 3
      css/print/pdf.css
  2. 10 2
      js/reveal.js

+ 4 - 3
css/print/pdf.css

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

+ 10 - 2
js/reveal.js

@@ -617,7 +617,7 @@
 			slideHeight = slideSize.height;
 
 		// 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
 		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
 				var page = document.createElement( 'div' );
 				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 );
 				page.appendChild( slide );