From eca8f6b80bf9503db13ec717e5f5a1dc55972256 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Mon, 5 Sep 2011 18:41:11 -0700 Subject: [PATCH] Working towards embedded image support --- pdf.js | 37 +++++++++++++++++++++++++++++++++---- worker/boot.js | 14 ++++++++++++++ 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/pdf.js b/pdf.js index 4deb1f934..f12f2213a 100644 --- a/pdf.js +++ b/pdf.js @@ -4251,12 +4251,33 @@ var PartialEvaluator = (function() { ); if ('Form' == type.name) { - args[0].code = this.evaluate(xobj, xref, - xobj.dict.get('Resources'), fonts, - images); + // console.log("got xobj that is a Form"); + args[0].code = this.eval(xobj, xref, xobj.dict.get('Resources'), + fonts, images); } - if (xobj instanceof JpegStream) + if (xobj instanceof JpegStream) { images.bind(xobj); // monitoring image load + // console.log("got xobj that is a JpegStream"); + } + + if (xobj.dict.get('Subtype').name == "Image") { + // Check if we have an image that is not rendered by the platform. + // Needs to be rendered ourself. + if (!(xobj instanceof JpegStream)) { + var image = xobj; + var dict = image.dict; + var w = dict.get('Width', 'W'); + var h = dict.get('Height', 'H'); + + var inline = false; + + var imageObj = new PDFImage(xref, resources, image, inline); + + console.log("xobj subtype image", w, h, imageObj.imageMask); + } + } + console.log("xobj subtype", xobj.dict.get('Subtype').name); + } } else if (cmd == 'Tf') { // eagerly collect all fonts var fontName = args[0].name; @@ -4285,6 +4306,14 @@ var PartialEvaluator = (function() { } } + var skips = ["paintXObject"]; + + if (skips.indexOf(fn) != -1) { + // console.log("skipping", fn); + args = []; + continue; + } + fnArray.push(fn); argsArray.push(args); args = []; diff --git a/worker/boot.js b/worker/boot.js index da09f21c5..57314c13f 100644 --- a/worker/boot.js +++ b/worker/boot.js @@ -50,6 +50,20 @@ var handler = new MessageHandler("worker", { // TODO: Handle images here. + console.log("about to send page", pageNum); + + // Make a copy of the fnArray and show all cmds it has. + var fnArray = preCompilation.fnArray.slice(0).sort(); + for (var i = 0; i < fnArray.length; true) { + if (fnArray[i] == fnArray[i + 1]) { + fnArray.splice(i, 1); + } else { + i++; + } + } + console.log("cmds", fnArray); + + handler.send("page", { pageNum: pageNum, fonts: fontsMin,