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