4e0d34413b
Now any Hugo section can be configured to generate a presentation without altering its type, and the theme is more easily copied into existing sites without conflicting with any preexisting layouts.
69 lines
1.8 KiB
JavaScript
Executable file
69 lines
1.8 KiB
JavaScript
Executable file
/**
|
|
* 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);
|
|
|
|
}
|
|
} );
|
|
|
|
|