Browse Source

getSlideBackground now works in pdf mode, add pdf tests

Hakim El Hattab 10 years ago
parent
commit
860580d4d0
4 changed files with 108 additions and 2 deletions
  1. 1 0
      css/print/pdf.css
  2. 9 2
      js/reveal.js
  3. 83 0
      test/test-pdf.html
  4. 15 0
      test/test-pdf.js

+ 1 - 0
css/print/pdf.css

@@ -152,6 +152,7 @@ ul, ol, div, p {
 
 /* Slide backgrounds are placed inside of their slide when exporting to PDF */
 .reveal section .slide-background {
+	display: block !important;
 	position: absolute;
 	top: 0;
 	left: 0;

+ 9 - 2
js/reveal.js

@@ -2693,11 +2693,18 @@ var Reveal = (function(){
 	/**
 	 * Returns the background element for the given slide.
 	 * All slides, even the ones with no background properties
-	 * defined, have a background element so this never returns
-	 * null.
+	 * defined, have a background element so as long as the
+	 * index is valid an element will be returned.
 	 */
 	function getSlideBackground( x, y ) {
 
+		// When printing to PDF the slide backgrounds are nested
+		// inside of the slides
+		if( isPrintingPDF() ) {
+			var slide = getSlide( x, y );
+			return slide ? slide.querySelector( '.slide-background' ) : undefined;
+		}
+
 		var horizontalBackground = document.querySelectorAll( '.backgrounds>.slide-background' )[ x ];
 		var verticalBackgrounds = horizontalBackground && horizontalBackground.querySelectorAll( '.slide-background' );
 

+ 83 - 0
test/test-pdf.html

@@ -0,0 +1,83 @@
+<!doctype html>
+<html lang="en">
+
+	<head>
+		<meta charset="utf-8">
+
+		<title>reveal.js - Test PDF exports</title>
+
+		<link rel="stylesheet" href="../css/reveal.css">
+		<link rel="stylesheet" href="../css/print/pdf.css">
+		<link rel="stylesheet" href="qunit-1.12.0.css">
+	</head>
+
+	<body style="overflow: auto;">
+
+		<div id="qunit"></div>
+  		<div id="qunit-fixture"></div>
+
+		<div class="reveal" style="display: none;">
+
+			<div class="slides">
+
+				<section>
+					<h1>1</h1>
+					<img data-src="fake-url.png">
+				</section>
+
+				<section>
+					<section>
+						<h1>2.1</h1>
+					</section>
+					<section>
+						<h1>2.2</h1>
+					</section>
+					<section>
+						<h1>2.3</h1>
+					</section>
+				</section>
+
+				<section id="fragment-slides">
+					<section>
+						<h1>3.1</h1>
+						<ul>
+							<li class="fragment">4.1</li>
+							<li class="fragment">4.2</li>
+							<li class="fragment">4.3</li>
+						</ul>
+					</section>
+
+					<section>
+						<h1>3.2</h1>
+						<ul>
+							<li class="fragment" data-fragment-index="0">4.1</li>
+							<li class="fragment" data-fragment-index="0">4.2</li>
+						</ul>
+					</section>
+
+					<section>
+						<h1>3.3</h1>
+						<ul>
+							<li class="fragment" data-fragment-index="1">3.3.1</li>
+							<li class="fragment" data-fragment-index="4">3.3.2</li>
+							<li class="fragment" data-fragment-index="4">3.3.3</li>
+						</ul>
+					</section>
+				</section>
+
+				<section>
+					<h1>4</h1>
+				</section>
+
+			</div>
+
+		</div>
+
+		<script src="../lib/js/head.min.js"></script>
+		<script src="../js/reveal.js"></script>
+		<script src="qunit-1.12.0.js"></script>
+
+		<script src="test-pdf.js"></script>
+
+	</body>
+</html>

+ 15 - 0
test/test-pdf.js

@@ -0,0 +1,15 @@
+
+Reveal.addEventListener( 'ready', function() {
+
+	// Only one test for now, we're mainly ensuring that there
+	// are no execution errors when running PDF mode
+
+	test( 'Reveal.isReady', function() {
+		strictEqual( Reveal.isReady(), true, 'returns true' );
+	});
+
+
+} );
+
+Reveal.initialize({ pdf: true });
+