From e59be64242112bb666c4e94bfe63660f7a581e30 Mon Sep 17 00:00:00 2001 From: freebird Date: Wed, 9 Jan 2019 00:40:26 +0100 Subject: [PATCH] Carica file su 'plugin/print-pdf' --- plugin/print-pdf/print-pdf.js | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 plugin/print-pdf/print-pdf.js diff --git a/plugin/print-pdf/print-pdf.js b/plugin/print-pdf/print-pdf.js new file mode 100644 index 0000000..f62aedc --- /dev/null +++ b/plugin/print-pdf/print-pdf.js @@ -0,0 +1,67 @@ +/** + * phantomjs script for printing presentations to PDF. + * + * Example: + * phantomjs print-pdf.js "http://revealjs.com?print-pdf" reveal-demo.pdf + * + * @author Manuel Bieh (https://github.com/manuelbieh) + * @author Hakim El Hattab (https://github.com/hakimel) + * @author Manuel Riezebosch (https://github.com/riezebosch) + */ + +// html2pdf.js +var system = require( 'system' ); + +var probePage = new WebPage(); +var printPage = new WebPage(); + +var inputFile = system.args[1] || 'index.html?print-pdf'; +var outputFile = system.args[2] || 'slides.pdf'; + +if( outputFile.match( /\.pdf$/gi ) === null ) { + outputFile += '.pdf'; +} + +console.log( 'Export PDF: Reading reveal.js config [1/4]' ); + +probePage.open( inputFile, function( status ) { + + console.log( 'Export PDF: Preparing print layout [2/4]' ); + + var config = probePage.evaluate( function() { + return Reveal.getConfig(); + } ); + + if( config ) { + + printPage.paperSize = { + width: Math.floor( config.width * ( 1 + config.margin ) ), + height: Math.floor( config.height * ( 1 + config.margin ) ), + border: 0 + }; + + printPage.open( inputFile, function( status ) { + console.log( 'Export PDF: Preparing pdf [3/4]') + 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 ); + console.log( 'Export PDF: Finished successfully!' ); + phantom.exit(); + }, 0 ); + }; + } + else { + + console.log( 'Export PDF: Unable to read reveal.js config. Make sure the input address points to a reveal.js page.' ); + phantom.exit( 1 ); + + } +} );