Basic transforms of PDF page/text space to canvas space
This commit is contained in:
		
							parent
							
								
									b860bc8d60
								
							
						
					
					
						commit
						68f1ca51ce
					
				
							
								
								
									
										26
									
								
								pdf.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								pdf.js
									
									
									
									
									
								
							@ -761,6 +761,8 @@ var Interpreter = (function() {
 | 
				
			|||||||
            return this.interpretHelper(new Parser(new Lexer(obj), true));
 | 
					            return this.interpretHelper(new Parser(new Lexer(obj), true));
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        interpretHelper: function(parser) {
 | 
					        interpretHelper: function(parser) {
 | 
				
			||||||
 | 
					            this.gfx.beginDrawing();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var args = [ ];
 | 
					            var args = [ ];
 | 
				
			||||||
            var obj;
 | 
					            var obj;
 | 
				
			||||||
            while (!((obj = parser.getObj()).isEOF())) {
 | 
					            while (!((obj = parser.getObj()).isEOF())) {
 | 
				
			||||||
@ -781,6 +783,8 @@ var Interpreter = (function() {
 | 
				
			|||||||
                    args.push(obj);
 | 
					                    args.push(obj);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.gfx.endDrawing();
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        typeCheck: function(params, args) {
 | 
					        typeCheck: function(params, args) {
 | 
				
			||||||
            if (params.length != args.length)
 | 
					            if (params.length != args.length)
 | 
				
			||||||
@ -806,6 +810,11 @@ var EchoGraphics = (function() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor.prototype = {
 | 
					    constructor.prototype = {
 | 
				
			||||||
 | 
					        beginDrawing: function () {
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        endDrawing: function () {
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Graphics state
 | 
					        // Graphics state
 | 
				
			||||||
        setLineWidth: function(width) {
 | 
					        setLineWidth: function(width) {
 | 
				
			||||||
            this.printdentln(width +" w");
 | 
					            this.printdentln(width +" w");
 | 
				
			||||||
@ -934,13 +943,22 @@ var CanvasExtraState = (function() {
 | 
				
			|||||||
})();
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var CanvasGraphics = (function() {
 | 
					var CanvasGraphics = (function() {
 | 
				
			||||||
    function constructor(canvasCtx, hdpi, vdpi, pageBox) {
 | 
					    function constructor(canvasCtx) {
 | 
				
			||||||
        this.ctx = canvasCtx;
 | 
					        this.ctx = canvasCtx;
 | 
				
			||||||
        this.current = new CanvasExtraState();
 | 
					        this.current = new CanvasExtraState();
 | 
				
			||||||
        this.stateStack = [ ];
 | 
					        this.stateStack = [ ];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor.prototype = {
 | 
					    constructor.prototype = {
 | 
				
			||||||
 | 
					        beginDrawing: function () {
 | 
				
			||||||
 | 
					            this.ctx.save();
 | 
				
			||||||
 | 
					            this.ctx.scale(1, -1);
 | 
				
			||||||
 | 
					            this.ctx.translate(0, -this.ctx.canvas.height);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        endDrawing: function () {
 | 
				
			||||||
 | 
					            this.ctx.restore();
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Graphics state
 | 
					        // Graphics state
 | 
				
			||||||
        setLineWidth: function(width) {
 | 
					        setLineWidth: function(width) {
 | 
				
			||||||
            this.ctx.lineWidth = width;
 | 
					            this.ctx.lineWidth = width;
 | 
				
			||||||
@ -1011,7 +1029,13 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
            this.current.lineY = y;
 | 
					            this.current.lineY = y;
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        showText: function(text) {
 | 
					        showText: function(text) {
 | 
				
			||||||
 | 
					            this.ctx.save();
 | 
				
			||||||
 | 
					            this.ctx.translate(0, 2 * this.current.lineY);
 | 
				
			||||||
 | 
					            this.ctx.scale(1, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.ctx.fillText(text, this.current.lineX, this.current.lineY);
 | 
					            this.ctx.fillText(text, this.current.lineX, this.current.lineY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.ctx.restore();
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Type3 fonts
 | 
					        // Type3 fonts
 | 
				
			||||||
 | 
				
			|||||||
@ -26,12 +26,10 @@ function displayPage(number) {
 | 
				
			|||||||
    pageDisplay.value = number;
 | 
					    pageDisplay.value = number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var ctx = canvas.getContext("2d");
 | 
					    var ctx = canvas.getContext("2d");
 | 
				
			||||||
    ctx.save();
 | 
					 | 
				
			||||||
    ctx.clearRect(0, 0, canvas.width, canvas.height);
 | 
					    ctx.clearRect(0, 0, canvas.width, canvas.height);
 | 
				
			||||||
    var gfx = new CanvasGraphics(ctx, 96.0, 96.0, null);
 | 
					    var gfx = new CanvasGraphics(ctx);
 | 
				
			||||||
    var interp = new Interpreter(null, page.res, null, gfx);
 | 
					    var interp = new Interpreter(null, page.res, null, gfx);
 | 
				
			||||||
    interp.interpretHelper(new MockParser(page.objs));
 | 
					    interp.interpretHelper(new MockParser(page.objs));
 | 
				
			||||||
    ctx.restore();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function nextPage() {
 | 
					function nextPage() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user