scale: 1.0,
pageWidth: function(page) {
- return page.mediaBox[2] * PDFViewer.scale;
+ var pdfToCssUnitsCoef = 96.0 / 72.0;
+ var width = (page.mediaBox[2] - page.mediaBox[0]);
+ return width * PDFViewer.scale * pdfToCssUnitsCoef;
},
pageHeight: function(page) {
- return page.mediaBox[3] * PDFViewer.scale;
+ var pdfToCssUnitsCoef = 96.0 / 72.0;
+ var height = (page.mediaBox[3] - page.mediaBox[1]);
+ return height * PDFViewer.scale * pdfToCssUnitsCoef;
},
lastPagesDrawn: [],
canvas.id = 'thumbnail' + num;
canvas.mozOpaque = true;
- // 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 = 104;
- canvas.height = 134;
+ var pageWidth = PDFViewer.pageWidth(page);
+ var pageHeight = PDFViewer.pageHeight(page);
+ var thumbScale = Math.min(104 / pageWidth, 134 / pageHeight);
+ canvas.width = pageWidth * thumbScale;
+ canvas.height = pageHeight * thumbScale;
div.appendChild(canvas);
var ctx = canvas.getContext('2d');
canvas.id = 'page' + num;
canvas.mozOpaque = true;
- // 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(page);
canvas.height = PDFViewer.pageHeight(page);
div.appendChild(canvas);
<style type="text/css"></style>
<script type="text/javascript" src="/pdf.js"></script>
<script type="text/javascript" src="/fonts.js"></script>
+ <script type="text/javascript" src="/crypto.js"></script>
<script type="text/javascript" src="/glyphlist.js"></script>
<script type="application/javascript">
var appPath, browser, canvas, currentTask, currentTaskIdx, failure, manifest, numPages, pdfDoc, stdout;
}
try {
+ var pdfToCssUnitsCoef = 96.0 / 72.0;
// using mediaBox for the canvas size
- var wTwips = (currentPage.mediaBox[2] - currentPage.mediaBox[0]);
- var hTwips = (currentPage.mediaBox[3] - currentPage.mediaBox[1]);
- canvas.width = wTwips * 96.0 / 72.0;
- canvas.height = hTwips * 96.0 / 72.0;
+ var pageWidth = (currentPage.mediaBox[2] - currentPage.mediaBox[0]);
+ var pageHeight = (currentPage.mediaBox[3] - currentPage.mediaBox[1]);
+ canvas.width = pageWidth * pdfToCssUnitsCoef;
+ canvas.height = pageHeight * pdfToCssUnitsCoef;
clear(ctx);
} catch(e) {
failure = 'page setup: '+ e.toString();
}
#viewer {
+}
+
+#canvas {
margin: auto;
- border: 1px solid black;
- width: 12.75in;
- height: 16.5in;
+ display: block;
}
#pageNumber {
</div>
<div id="viewer">
- <!-- Canvas dimensions must be specified in CSS pixels. CSS pixels
- are always 96 dpi. 816x1056 is 8.5x11in at 96dpi. -->
- <canvas id="canvas" width="816" height="1056" defaultwidth="816" defaultheight="1056"></canvas>
+ <canvas id="canvas"></canvas>
</div>
</body>
</html>
var t0 = Date.now();
var page = pdfDocument.getPage(pageNum = num);
- canvas.width = parseInt(canvas.getAttribute("defaultwidth")) * pageScale;
- canvas.height = parseInt(canvas.getAttribute("defaultheight")) * pageScale;
- // scale canvas by 2
- canvas.width = 2 * page.mediaBox[2];
- canvas.hieght = 2 * page.mediaBox[3];
+ var pdfToCssUnitsCoef = 96.0 / 72.0;
+ var pageWidth = (page.mediaBox[2] - page.mediaBox[0]);
+ var pageHeight = (page.mediaBox[3] - page.mediaBox[1]);
+ canvas.width = pageScale * pageWidth * pdfToCssUnitsCoef;
+ canvas.height = pageScale * pageHeight * pdfToCssUnitsCoef;
var t1 = Date.now();
var ctx = canvas.getContext("2d");
</div>
<div id="viewer">
- <!-- Canvas dimensions must be specified in CSS pixels. CSS pixels
- are always 96 dpi. 816x1056 is 8.5x11in at 96dpi. -->
- <!-- We're rendering here at 1.5x scale. -->
- <canvas id="canvas" width="1224" height="1584"></canvas>
+ <canvas id="canvas"></canvas>
</div>
</body>
</html>
document.body.appendChild(div);
},
+ "setup_page": function(data) {
+ var size = data.split(",");
+ var canvas = this.canvas, ctx = this.ctx;
+ canvas.width = parseInt(size[0]);
+ canvas.height = parseInt(size[1]);
+ },
+
"fonts": function(data) {
this.waitingForFonts = true;
this.fontWorker.ensureFonts(data, function() {
importScripts("canvas.js");
importScripts("../pdf.js");
importScripts("../fonts.js");
+importScripts("../crypto.js");
importScripts("../glyphlist.js")
// Use the JpegStreamProxy proxy.
// Let's try to render the first page...
var page = pdfDocument.getPage(parseInt(data));
+ var pdfToCssUnitsCoef = 96.0 / 72.0;
+ var pageWidth = (page.mediaBox[2] - page.mediaBox[0]) * pdfToCssUnitsCoef;
+ var pageHeight = (page.mediaBox[3] - page.mediaBox[1]) * pdfToCssUnitsCoef;
+ postMessage({
+ action: "setup_page",
+ data: pageWidth + "," + pageHeight
+ });
+
+ // Set canvas size.
+ canvas.width = pageWidth;
+ canvas.height = pageHeight;
+
// page.compile will collect all fonts for us, once we have loaded them
// we can trigger the actual page rendering with page.display
var fonts = [];