var currentPage = this.pages[this.page - 1];
var pageWidthScale = (window.innerWidth - kScrollbarPadding) /
- currentPage.width / kCssUnits;
+ currentPage.width / kCssUnits;
var pageHeightScale = (window.innerHeight - kScrollbarPadding) /
- currentPage.height / kCssUnits;
+ currentPage.height / kCssUnits;
if ('page-width' == value)
this.setScale(pageWidthScale, resetAutoSettings);
if ('page-height' == value)
var page = pdf.getPage(i);
pages.push(new PageView(container, page, i, page.width, page.height,
page.stats, this.navigateTo.bind(this)));
- thumbnails.push(new ThumbnailView(sidebar, pages[i - 1],
+ thumbnails.push(new ThumbnailView(sidebar, page, i,
page.width / page.height));
var pageRef = page.ref;
pagesRefMap[pageRef.num + ' ' + pageRef.gen + ' R'] = i;
}
};
-var PageView = function(container, content, id, width, height,
+var PageView = function(container, content, id, pageWidth, pageHeight,
stats, navigateTo) {
- this.width = width;
- this.height = height;
this.id = id;
this.content = content;
+ var view = this.content.view;
+ this.x = view.x;
+ this.y = view.y;
+ this.width = view.width;
+ this.height = view.height;
+
var anchor = document.createElement('a');
anchor.name = '' + this.id;
return false;
};
}
+
var links = content.getLinks();
for (var i = 0; i < links.length; i++) {
var link = document.createElement('a');
- link.style.left = Math.floor(links[i].x * scale) + 'px';
- link.style.top = Math.floor(links[i].y * scale) + 'px';
+ link.style.left = (Math.floor(links[i].x - this.x) * scale) + 'px';
+ link.style.top = (Math.floor(links[i].y - this.y) * scale) + 'px';
link.style.width = Math.ceil(links[i].width * scale) + 'px';
link.style.height = Math.ceil(links[i].height * scale) + 'px';
link.href = links[i].url || '';
canvas.id = 'page' + this.id;
canvas.mozOpaque = true;
- canvas.width = this.width * this.scale;
- canvas.height = this.height * this.scale;
+ var scale = this.scale;
+ canvas.width = pageWidth * scale;
+ canvas.height = pageHeight * scale;
div.appendChild(canvas);
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
+ ctx.translate(-this.x * scale, -this.y * scale);
stats.begin = Date.now();
this.content.startRendering(ctx, this.updateStats);
};
};
-var ThumbnailView = function(container, page, pageRatio) {
+var ThumbnailView = function(container, page, id, pageRatio) {
var anchor = document.createElement('a');
- anchor.href = '#' + page.id;
+ anchor.href = '#' + id;
var div = document.createElement('div');
- div.id = 'thumbnailContainer' + page.id;
+ div.id = 'thumbnailContainer' + id;
div.className = 'thumbnail';
anchor.appendChild(div);
return;
var canvas = document.createElement('canvas');
- canvas.id = 'thumbnail' + page.id;
+ canvas.id = 'thumbnail' + id;
canvas.mozOpaque = true;
var maxThumbSize = 134;
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
- page.content.startRendering(ctx, function() { });
+ var view = page.view;
+ var scaleX = (canvas.width / page.width);
+ var scaleY = (canvas.height / page.height);
+ ctx.translate(-view.x * scaleX, -view.y * scaleY);
+ div.style.width = (view.width * scaleX) + 'px';
+ div.style.height = (view.height * scaleY) + 'px';
+ div.style.lineHeight = (view.height * scaleY) + 'px';
+
+ page.startRendering(ctx, function() { });
};
};