PDF export: add option to export one page per fragment
This commit is contained in:
		
							
								
								
									
										42
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -727,14 +727,39 @@ | |||||||
| 					numberElement.innerHTML = formatSlideNumber( slideNumberH, '.', slideNumberV ); | 					numberElement.innerHTML = formatSlideNumber( slideNumberH, '.', slideNumberV ); | ||||||
| 					page.appendChild( numberElement ); | 					page.appendChild( numberElement ); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
|  | 				// Copy page and show fragments one after another | ||||||
|  | 				if ( isPrintingPDFFragments() ) { | ||||||
|  |  | ||||||
|  | 					var numberOfFragments = toArray( page.querySelectorAll( '.fragment' ) ).length; | ||||||
|  |  | ||||||
|  | 					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 ) { | ||||||
|  |                                 fragment.classList.add( 'visible' ); | ||||||
|  |                             } else { | ||||||
|  |                                 fragment.classList.remove( 'visible' ); | ||||||
|  |                             } | ||||||
|  |                         } ); | ||||||
|  |  | ||||||
|  |                         page = clonedPage; | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  | 				} | ||||||
|  | 				// Show all fragments | ||||||
|  | 				else { | ||||||
|  | 					toArray( page.querySelectorAll( '.fragment' ) ).forEach( function( fragment ) { | ||||||
|  | 						fragment.classList.add( 'visible' ); | ||||||
|  | 					} ); | ||||||
|  | 				} | ||||||
|  |  | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 		} ); | 		} ); | ||||||
|  |  | ||||||
| 		// Show all fragments |  | ||||||
| 		toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ' .fragment' ) ).forEach( function( fragment ) { |  | ||||||
| 			fragment.classList.add( 'visible' ); |  | ||||||
| 		} ); |  | ||||||
|  |  | ||||||
| 		// Notify subscribers that the PDF layout is good to go | 		// Notify subscribers that the PDF layout is good to go | ||||||
| 		dispatchEvent( 'pdf-ready' ); | 		dispatchEvent( 'pdf-ready' ); | ||||||
| @@ -1497,6 +1522,15 @@ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  | 	 * Check if this instance is being used to print a PDF with fragments. | ||||||
|  |      */ | ||||||
|  |     function isPrintingPDFFragments() { | ||||||
|  |  | ||||||
|  |     	return ( /print-pdf-fragments/gi ).test( window.location.search ); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Hides the address bar if we're on a mobile device. | 	 * Hides the address bar if we're on a mobile device. | ||||||
| 	 */ | 	 */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user