Merge pull request #227 from saebekassebil/master

CanvasGraphics.compile update
This commit is contained in:
sbarman 2011-07-19 14:23:25 -07:00
commit 3d24b591dc

37
pdf.js
View File

@ -3561,23 +3561,9 @@ var PartialEvaluator = (function() {
eval: function(stream, xref, resources, fonts) { eval: function(stream, xref, resources, fonts) {
resources = xref.fetchIfRef(resources) || new Dict(); resources = xref.fetchIfRef(resources) || new Dict();
var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict(); var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict();
var parser = new Parser(new Lexer(stream), false); var parser = new Parser(new Lexer(stream), false);
var objpool = []; var args = [], argsArray = [], fnArray = [], obj;
function emitArg(arg) {
if (typeof arg == 'object' || typeof arg == 'string') {
var index = objpool.length;
objpool[index] = arg;
return 'objpool[' + index + ']';
}
return arg;
}
var src = '';
var args = [];
var obj;
while (!IsEOF(obj = parser.getObj())) { while (!IsEOF(obj = parser.getObj())) {
if (IsCmd(obj)) { if (IsCmd(obj)) {
var cmd = obj.cmd; var cmd = obj.cmd;
@ -3599,10 +3585,7 @@ var PartialEvaluator = (function() {
); );
if ('Form' == type.name) { if ('Form' == type.name) {
args[0].code = this.eval(xobj, args[0].code = this.eval(xobj, xref, xobj.dict.get('Resources'), fonts);
xref,
xobj.dict.get('Resources'),
fonts);
} }
} }
} else if (cmd == 'Tf') { // eagerly collect all fonts } else if (cmd == 'Tf') { // eagerly collect all fonts
@ -3622,21 +3605,19 @@ var PartialEvaluator = (function() {
} }
} }
src += 'this.'; fnArray.push(fn);
src += fn; argsArray.push(args);
src += '('; args = [];
src += args.map(emitArg).join(',');
src += ');\n';
args.length = 0;
} else { } else {
assertWellFormed(args.length <= 33, 'Too many arguments'); assertWellFormed(args.length <= 33, 'Too many arguments');
args.push(obj); args.push(obj);
} }
} }
var fn = Function('objpool', src); return function(gfx) {
return function(gfx) { fn.call(gfx, objpool); }; for(var i = 0, length = argsArray.length; i < length; i++)
gfx[fnArray[i]].apply(gfx, argsArray[i]);
}
}, },
translateFont: function(fontDict, xref, resources) { translateFont: function(fontDict, xref, resources) {