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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user