print-pdf using callback iso timer

Use window.callPhantom icw page. onCallback to wait for pdf-ready event.
From: http://stackoverflow.com/a/28925479/129269
This commit is contained in:
Manuel Riezebosch 2017-03-14 14:13:24 +01:00
parent 7e6fb9ec87
commit 9a7c7ce93a

View File

@ -6,6 +6,7 @@
* *
* @author Manuel Bieh (https://github.com/manuelbieh) * @author Manuel Bieh (https://github.com/manuelbieh)
* @author Hakim El Hattab (https://github.com/hakimel) * @author Hakim El Hattab (https://github.com/hakimel)
* @author Manuel Riezebosch (https://github.com/riezebosch)
*/ */
// html2pdf.js // html2pdf.js
@ -21,11 +22,11 @@ if( outputFile.match( /\.pdf$/gi ) === null ) {
outputFile += '.pdf'; outputFile += '.pdf';
} }
console.log( 'Export PDF: Reading reveal.js config [1/3]' ); console.log( 'Export PDF: Reading reveal.js config [1/4]' );
probePage.open( inputFile, function( status ) { probePage.open( inputFile, function( status ) {
console.log( 'Export PDF: Preparing print layout [2/3]' ); console.log( 'Export PDF: Preparing print layout [2/4]' );
var config = probePage.evaluate( function() { var config = probePage.evaluate( function() {
return Reveal.getConfig(); return Reveal.getConfig();
@ -40,14 +41,22 @@ probePage.open( inputFile, function( status ) {
}; };
printPage.open( inputFile, function( status ) { printPage.open( inputFile, function( status ) {
window.setTimeout( function() { console.log( 'Export PDF: Preparing pdf [3/4]')
console.log( 'Export PDF: Writing file [3/3]' ); printPage.evaluate(function() {
Reveal.isReady() ? window.callPhantom() : Reveal.addEventListener( 'pdf-ready', window.callPhantom );
});
} );
printPage.onCallback = function(data) {
// For some reason we need to "jump the queue" for syntax highlighting to work.
// See: http://stackoverflow.com/a/3580132/129269
setTimeout(function() {
console.log( 'Export PDF: Writing file [4/4]' );
printPage.render( outputFile ); printPage.render( outputFile );
console.log( 'Export PDF: Finished successfully!' ); console.log( 'Export PDF: Finished successfully!' );
phantom.exit(); phantom.exit();
}, 1000 ); }, 0);
} ); };
} }
else { else {
@ -55,7 +64,6 @@ probePage.open( inputFile, function( status ) {
phantom.exit(1); phantom.exit(1);
} }
} ); } );