Support for multi-size page PDFs
This commit is contained in:
parent
7b931b3635
commit
5d154e04bf
5 changed files with 45 additions and 20 deletions
|
@ -26,41 +26,53 @@ var PDFViewer = {
|
|||
|
||||
scale: 1.0,
|
||||
|
||||
pageWidth: function() {
|
||||
return 816 * PDFViewer.scale;
|
||||
pageWidth: function(page) {
|
||||
return page.mediaBox[2] * PDFViewer.scale;
|
||||
},
|
||||
|
||||
pageHeight: function() {
|
||||
return 1056 * PDFViewer.scale;
|
||||
pageHeight: function(page) {
|
||||
return page.mediaBox[3] * PDFViewer.scale;
|
||||
},
|
||||
|
||||
lastPagesDrawn: [],
|
||||
|
||||
visiblePages: function() {
|
||||
var pageHeight = PDFViewer.pageHeight() + 20; // Add 20 for the margins.
|
||||
visiblePages: function() {
|
||||
const pageBottomMargin = 20;
|
||||
var windowTop = window.pageYOffset;
|
||||
var windowBottom = window.pageYOffset + window.innerHeight;
|
||||
var pageStartIndex = Math.floor(windowTop / pageHeight);
|
||||
var pageStopIndex = Math.ceil(windowBottom / pageHeight);
|
||||
|
||||
var pageHeight, page;
|
||||
var i, n = PDFViewer.numberOfPages, currentHeight = 0;
|
||||
for (i = 1; i <= n; i++) {
|
||||
var page = PDFViewer.pdf.getPage(i);
|
||||
pageHeight = PDFViewer.pageHeight(page) + pageBottomMargin;
|
||||
if (currentHeight + pageHeight > windowTop)
|
||||
break;
|
||||
currentHeight += pageHeight;
|
||||
}
|
||||
|
||||
var pages = [];
|
||||
|
||||
for (var i = pageStartIndex; i <= pageStopIndex; i++) {
|
||||
pages.push(i + 1);
|
||||
for (; i <= n && currentHeight < windowBottom; i++) {
|
||||
var page = PDFViewer.pdf.getPage(i);
|
||||
pageHeight = PDFViewer.pageHeight(page) + pageBottomMargin;
|
||||
currentHeight += pageHeight;
|
||||
pages.push(i);
|
||||
}
|
||||
|
||||
return pages;
|
||||
},
|
||||
|
||||
createPage: function(num) {
|
||||
var page = PDFViewer.pdf.getPage(num);
|
||||
|
||||
var anchor = document.createElement('a');
|
||||
anchor.name = '' + num;
|
||||
|
||||
var div = document.createElement('div');
|
||||
div.id = 'pageContainer' + num;
|
||||
div.className = 'page';
|
||||
div.style.width = PDFViewer.pageWidth() + 'px';
|
||||
div.style.height = PDFViewer.pageHeight() + 'px';
|
||||
div.style.width = PDFViewer.pageWidth(page) + 'px';
|
||||
div.style.height = PDFViewer.pageHeight(page) + 'px';
|
||||
|
||||
PDFViewer.element.appendChild(anchor);
|
||||
PDFViewer.element.appendChild(div);
|
||||
|
@ -91,8 +103,8 @@ var PDFViewer = {
|
|||
|
||||
// Canvas dimensions must be specified in CSS pixels. CSS pixels
|
||||
// are always 96 dpi. These dimensions are 8.5in x 11in at 96dpi.
|
||||
canvas.width = PDFViewer.pageWidth();
|
||||
canvas.height = PDFViewer.pageHeight();
|
||||
canvas.width = PDFViewer.pageWidth(page);
|
||||
canvas.height = PDFViewer.pageHeight(page);
|
||||
div.appendChild(canvas);
|
||||
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue