Merge pull request #136 from notmasteryet/issue-132-part-A
the "hieght" and the 72dpi<->96dpi fixes
This commit is contained in:
commit
ae16e8f62c
@ -29,11 +29,15 @@ var PDFViewer = {
|
|||||||
scale: 1.0,
|
scale: 1.0,
|
||||||
|
|
||||||
pageWidth: function(page) {
|
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) {
|
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: [],
|
lastPagesDrawn: [],
|
||||||
@ -106,10 +110,11 @@ var PDFViewer = {
|
|||||||
canvas.id = 'thumbnail' + num;
|
canvas.id = 'thumbnail' + num;
|
||||||
canvas.mozOpaque = true;
|
canvas.mozOpaque = true;
|
||||||
|
|
||||||
// Canvas dimensions must be specified in CSS pixels. CSS pixels
|
var pageWidth = PDFViewer.pageWidth(page);
|
||||||
// are always 96 dpi. These dimensions are 8.5in x 11in at 96dpi.
|
var pageHeight = PDFViewer.pageHeight(page);
|
||||||
canvas.width = 104;
|
var thumbScale = Math.min(104 / pageWidth, 134 / pageHeight);
|
||||||
canvas.height = 134;
|
canvas.width = pageWidth * thumbScale;
|
||||||
|
canvas.height = pageHeight * thumbScale;
|
||||||
div.appendChild(canvas);
|
div.appendChild(canvas);
|
||||||
|
|
||||||
var ctx = canvas.getContext('2d');
|
var ctx = canvas.getContext('2d');
|
||||||
@ -175,8 +180,6 @@ var PDFViewer = {
|
|||||||
canvas.id = 'page' + num;
|
canvas.id = 'page' + num;
|
||||||
canvas.mozOpaque = true;
|
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.width = PDFViewer.pageWidth(page);
|
||||||
canvas.height = PDFViewer.pageHeight(page);
|
canvas.height = PDFViewer.pageHeight(page);
|
||||||
div.appendChild(canvas);
|
div.appendChild(canvas);
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<style type="text/css"></style>
|
<style type="text/css"></style>
|
||||||
<script type="text/javascript" src="/pdf.js"></script>
|
<script type="text/javascript" src="/pdf.js"></script>
|
||||||
<script type="text/javascript" src="/fonts.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="text/javascript" src="/glyphlist.js"></script>
|
||||||
<script type="application/javascript">
|
<script type="application/javascript">
|
||||||
var appPath, browser, canvas, currentTask, currentTaskIdx, failure, manifest, numPages, pdfDoc, stdout;
|
var appPath, browser, canvas, currentTask, currentTaskIdx, failure, manifest, numPages, pdfDoc, stdout;
|
||||||
@ -103,11 +104,12 @@ function nextPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
var pdfToCssUnitsCoef = 96.0 / 72.0;
|
||||||
// using mediaBox for the canvas size
|
// using mediaBox for the canvas size
|
||||||
var wTwips = (currentPage.mediaBox[2] - currentPage.mediaBox[0]);
|
var pageWidth = (currentPage.mediaBox[2] - currentPage.mediaBox[0]);
|
||||||
var hTwips = (currentPage.mediaBox[3] - currentPage.mediaBox[1]);
|
var pageHeight = (currentPage.mediaBox[3] - currentPage.mediaBox[1]);
|
||||||
canvas.width = wTwips * 96.0 / 72.0;
|
canvas.width = pageWidth * pdfToCssUnitsCoef;
|
||||||
canvas.height = hTwips * 96.0 / 72.0;
|
canvas.height = pageHeight * pdfToCssUnitsCoef;
|
||||||
clear(ctx);
|
clear(ctx);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
failure = 'page setup: '+ e.toString();
|
failure = 'page setup: '+ e.toString();
|
||||||
|
@ -24,10 +24,11 @@ span#info {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#viewer {
|
#viewer {
|
||||||
|
}
|
||||||
|
|
||||||
|
#canvas {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
border: 1px solid black;
|
display: block;
|
||||||
width: 12.75in;
|
|
||||||
height: 16.5in;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pageNumber {
|
#pageNumber {
|
||||||
|
@ -25,9 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="viewer">
|
<div id="viewer">
|
||||||
<!-- Canvas dimensions must be specified in CSS pixels. CSS pixels
|
<canvas id="canvas"></canvas>
|
||||||
are always 96 dpi. 816x1056 is 8.5x11in at 96dpi. -->
|
|
||||||
<canvas id="canvas" width="816" height="1056" defaultwidth="816" defaultheight="1056"></canvas>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
10
viewer.js
10
viewer.js
@ -60,12 +60,12 @@ function displayPage(num) {
|
|||||||
var t0 = Date.now();
|
var t0 = Date.now();
|
||||||
|
|
||||||
var page = pdfDocument.getPage(pageNum = num);
|
var page = pdfDocument.getPage(pageNum = num);
|
||||||
canvas.width = parseInt(canvas.getAttribute("defaultwidth")) * pageScale;
|
|
||||||
canvas.height = parseInt(canvas.getAttribute("defaultheight")) * pageScale;
|
|
||||||
|
|
||||||
// scale canvas by 2
|
var pdfToCssUnitsCoef = 96.0 / 72.0;
|
||||||
canvas.width = 2 * page.mediaBox[2];
|
var pageWidth = (page.mediaBox[2] - page.mediaBox[0]);
|
||||||
canvas.hieght = 2 * page.mediaBox[3];
|
var pageHeight = (page.mediaBox[3] - page.mediaBox[1]);
|
||||||
|
canvas.width = pageScale * pageWidth * pdfToCssUnitsCoef;
|
||||||
|
canvas.height = pageScale * pageHeight * pdfToCssUnitsCoef;
|
||||||
|
|
||||||
var t1 = Date.now();
|
var t1 = Date.now();
|
||||||
var ctx = canvas.getContext("2d");
|
var ctx = canvas.getContext("2d");
|
||||||
|
@ -39,10 +39,7 @@ window.onload = function() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="viewer">
|
<div id="viewer">
|
||||||
<!-- Canvas dimensions must be specified in CSS pixels. CSS pixels
|
<canvas id="canvas"></canvas>
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -306,6 +306,13 @@ function WorkerPDFDoc(canvas) {
|
|||||||
document.body.appendChild(div);
|
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) {
|
"fonts": function(data) {
|
||||||
this.waitingForFonts = true;
|
this.waitingForFonts = true;
|
||||||
this.fontWorker.ensureFonts(data, function() {
|
this.fontWorker.ensureFonts(data, function() {
|
||||||
|
@ -31,6 +31,7 @@ importScripts("console.js")
|
|||||||
importScripts("canvas.js");
|
importScripts("canvas.js");
|
||||||
importScripts("../pdf.js");
|
importScripts("../pdf.js");
|
||||||
importScripts("../fonts.js");
|
importScripts("../fonts.js");
|
||||||
|
importScripts("../crypto.js");
|
||||||
importScripts("../glyphlist.js")
|
importScripts("../glyphlist.js")
|
||||||
|
|
||||||
// Use the JpegStreamProxy proxy.
|
// Use the JpegStreamProxy proxy.
|
||||||
@ -59,6 +60,18 @@ onmessage = function(event) {
|
|||||||
// Let's try to render the first page...
|
// Let's try to render the first page...
|
||||||
var page = pdfDocument.getPage(parseInt(data));
|
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
|
// page.compile will collect all fonts for us, once we have loaded them
|
||||||
// we can trigger the actual page rendering with page.display
|
// we can trigger the actual page rendering with page.display
|
||||||
var fonts = [];
|
var fonts = [];
|
||||||
|
Loading…
Reference in New Issue
Block a user