some more flexibility for pdf export sizes
This commit is contained in:
parent
059cca6fa4
commit
2f90e9198d
78
js/reveal.js
78
js/reveal.js
|
@ -417,13 +417,15 @@ var Reveal = (function(){
|
||||||
// size of our pages
|
// size of our pages
|
||||||
var pageAspectRatio = 1.295;
|
var pageAspectRatio = 1.295;
|
||||||
|
|
||||||
|
var slideSize = getComputedSlideSize( window.innerWidth, window.innerHeight );
|
||||||
|
|
||||||
// Dimensions of the PDF pages
|
// Dimensions of the PDF pages
|
||||||
var pageWidth = config.width * 1.3,
|
var pageWidth = Math.round( slideSize.width * ( 1 + config.margin ) ),
|
||||||
pageHeight = Math.round( pageWidth / pageAspectRatio );
|
pageHeight = Math.round( pageWidth / pageAspectRatio );
|
||||||
|
|
||||||
// Dimensions of slides within the pages
|
// Dimensions of slides within the pages
|
||||||
var slideWidth = config.width,
|
var slideWidth = slideSize.width,
|
||||||
slideHeight = config.height;
|
slideHeight = slideSize.height;
|
||||||
|
|
||||||
document.body.classList.add( 'print-pdf' );
|
document.body.classList.add( 'print-pdf' );
|
||||||
document.body.style.width = pageWidth + 'px';
|
document.body.style.width = pageWidth + 'px';
|
||||||
|
@ -440,7 +442,7 @@ var Reveal = (function(){
|
||||||
top = ( pageHeight - slideHeight ) / 2;
|
top = ( pageHeight - slideHeight ) / 2;
|
||||||
|
|
||||||
var contentHeight = getAbsoluteHeight( slide );
|
var contentHeight = getAbsoluteHeight( slide );
|
||||||
var numberOfPages = Math.ceil( contentHeight / slideHeight );
|
var numberOfPages = Math.ceil( contentHeight / pageHeight );
|
||||||
|
|
||||||
// Top align when we're taller than a single page
|
// Top align when we're taller than a single page
|
||||||
if( numberOfPages > 1 ) {
|
if( numberOfPages > 1 ) {
|
||||||
|
@ -462,7 +464,7 @@ var Reveal = (function(){
|
||||||
var background = slide.querySelector( '.slide-background' );
|
var background = slide.querySelector( '.slide-background' );
|
||||||
if( background ) {
|
if( background ) {
|
||||||
background.style.width = pageWidth + 'px';
|
background.style.width = pageWidth + 'px';
|
||||||
background.style.height = pageHeight + 'px';
|
background.style.height = ( pageHeight * numberOfPages ) + 'px';
|
||||||
background.style.top = -top + 'px';
|
background.style.top = -top + 'px';
|
||||||
background.style.left = -left + 'px';
|
background.style.left = -left + 'px';
|
||||||
}
|
}
|
||||||
|
@ -1198,37 +1200,18 @@ var Reveal = (function(){
|
||||||
|
|
||||||
if( dom.wrapper && !isPrintingPDF() ) {
|
if( dom.wrapper && !isPrintingPDF() ) {
|
||||||
|
|
||||||
// Available space to scale within
|
var size = getComputedSlideSize();
|
||||||
var availableWidth = dom.wrapper.offsetWidth,
|
|
||||||
availableHeight = dom.wrapper.offsetHeight;
|
|
||||||
|
|
||||||
// Reduce available space by margin
|
var slidePadding = 20; // TODO Dig this out of DOM
|
||||||
availableWidth -= ( availableHeight * config.margin );
|
|
||||||
availableHeight -= ( availableHeight * config.margin );
|
|
||||||
|
|
||||||
// Dimensions of the content
|
|
||||||
var slideWidth = config.width,
|
|
||||||
slideHeight = config.height,
|
|
||||||
slidePadding = 20; // TODO Dig this out of DOM
|
|
||||||
|
|
||||||
// Layout the contents of the slides
|
// Layout the contents of the slides
|
||||||
layoutSlideContents( config.width, config.height, slidePadding );
|
layoutSlideContents( config.width, config.height, slidePadding );
|
||||||
|
|
||||||
// Slide width may be a percentage of available width
|
dom.slides.style.width = size.width + 'px';
|
||||||
if( typeof slideWidth === 'string' && /%$/.test( slideWidth ) ) {
|
dom.slides.style.height = size.height + 'px';
|
||||||
slideWidth = parseInt( slideWidth, 10 ) / 100 * availableWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Slide height may be a percentage of available height
|
|
||||||
if( typeof slideHeight === 'string' && /%$/.test( slideHeight ) ) {
|
|
||||||
slideHeight = parseInt( slideHeight, 10 ) / 100 * availableHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
dom.slides.style.width = slideWidth + 'px';
|
|
||||||
dom.slides.style.height = slideHeight + 'px';
|
|
||||||
|
|
||||||
// Determine scale of content to fit within available space
|
// Determine scale of content to fit within available space
|
||||||
scale = Math.min( availableWidth / slideWidth, availableHeight / slideHeight );
|
scale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );
|
||||||
|
|
||||||
// Respect max/min scale settings
|
// Respect max/min scale settings
|
||||||
scale = Math.max( scale, config.minScale );
|
scale = Math.max( scale, config.minScale );
|
||||||
|
@ -1265,7 +1248,7 @@ var Reveal = (function(){
|
||||||
slide.style.top = 0;
|
slide.style.top = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
slide.style.top = Math.max( ( ( slideHeight - getAbsoluteHeight( slide ) ) / 2 ) - slidePadding, 0 ) + 'px';
|
slide.style.top = Math.max( ( ( size.height - getAbsoluteHeight( slide ) ) / 2 ) - slidePadding, 0 ) + 'px';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1313,6 +1296,41 @@ var Reveal = (function(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates the computed pixel size of our slides. These
|
||||||
|
* values are based on the width and height configuration
|
||||||
|
* options.
|
||||||
|
*/
|
||||||
|
function getComputedSlideSize( presentationWidth, presentationHeight ) {
|
||||||
|
|
||||||
|
var size = {
|
||||||
|
// Slide size
|
||||||
|
width: config.width,
|
||||||
|
height: config.height,
|
||||||
|
|
||||||
|
// Presentation size
|
||||||
|
presentationWidth: presentationWidth || dom.wrapper.offsetWidth,
|
||||||
|
presentationHeight: presentationHeight || dom.wrapper.offsetHeight
|
||||||
|
};
|
||||||
|
|
||||||
|
// Reduce available space by margin
|
||||||
|
size.presentationWidth -= ( size.presentationHeight * config.margin );
|
||||||
|
size.presentationHeight -= ( size.presentationHeight * config.margin );
|
||||||
|
|
||||||
|
// Slide width may be a percentage of available width
|
||||||
|
if( typeof size.width === 'string' && /%$/.test( size.width ) ) {
|
||||||
|
size.width = parseInt( size.width, 10 ) / 100 * size.presentationWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slide height may be a percentage of available height
|
||||||
|
if( typeof size.height === 'string' && /%$/.test( size.height ) ) {
|
||||||
|
size.height = parseInt( size.height, 10 ) / 100 * size.presentationHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the vertical index of a stack so that the same
|
* Stores the vertical index of a stack so that the same
|
||||||
* vertical slide can be selected when navigating to and
|
* vertical slide can be selected when navigating to and
|
||||||
|
|
Loading…
Reference in New Issue