diff --git a/share/pdf2htmlEX.js.in b/share/pdf2htmlEX.js.in index 50522fe..a1a5aa1 100644 --- a/share/pdf2htmlEX.js.in +++ b/share/pdf2htmlEX.js.in @@ -188,7 +188,7 @@ Page.prototype = { * @param{number} ratio */ rescale : function(ratio) { - if (ratio == 0) { + if (ratio === 0) { // reset scale this.cur_scale = this.original_scale; } else { @@ -211,7 +211,7 @@ Page.prototype = { /* * return the coordinate of the top-left corner of container * in our coordinate system - * assuming that p.parentNode == p.offsetParent + * assuming that p.parentNode === p.offsetParent */ view_position : function () { var p = this.page; @@ -228,7 +228,6 @@ Page.prototype = { }; /** - * export pdf2htmlEX.Viewer * @constructor * @param{Object=} config */ @@ -265,7 +264,7 @@ Viewer.prototype = { var nodes = this.outline.childNodes; for (var i = 0, l = nodes.length; i < l; ++i) { var cur_node = nodes[i]; - if (cur_node.nodeName == 'UL') { + if (cur_node.nodeName === 'UL') { empty = false; break; } @@ -315,7 +314,7 @@ Viewer.prototype = { var nodes = this.container.childNodes; for (var i = 0, l = nodes.length; i < l; ++i) { var cur_node = nodes[i]; - if ((cur_node.nodeType == Node.ELEMENT_NODE) + if ((cur_node.nodeType === Node.ELEMENT_NODE) && cur_node.classList.contains(CSS_CLASS_NAMES.page_frame)) { var p = new Page(cur_node); new_pages.push(p); @@ -331,7 +330,7 @@ Viewer.prototype = { * @param{number=} pages_to_preload * @param{function(Page)=} callback * - * TODO: remove callback + * TODO: remove callback -> promise ? */ load_page : function(idx, pages_to_preload, callback) { var pages = this.pages; @@ -363,7 +362,7 @@ Viewer.prototype = { xhr.open('GET', url, true); xhr.onreadystatechange = function(){ if (xhr.readyState != 4) return; - if (xhr.status == 200) { + if (xhr.status === 200) { // find the page element in the data var div = document.createElement('div'); div.innerHTML = xhr.responseText; @@ -372,7 +371,7 @@ Viewer.prototype = { var nodes = div.childNodes; for (var i = 0, l = nodes.length; i < l; ++i) { var cur_node = nodes[i]; - if ((cur_node.nodeType == Node.ELEMENT_NODE) + if ((cur_node.nodeType === Node.ELEMENT_NODE) && cur_node.classList.contains(CSS_CLASS_NAMES.page_frame)) { new_page = cur_node; break; @@ -473,7 +472,7 @@ Viewer.prototype = { if (!cur_page_fully_visible) { // check the visible fraction of the page var page_visible_ratio = (Math.min(container_max_y, page_max_y) - Math.max(container_min_y, page_min_y)) / page_height; - if ((i == cur_page_idx) && (Math.abs(page_visible_ratio - 1.0) <= EPS)) { + if ((i === cur_page_idx) && (Math.abs(page_visible_ratio - 1.0) <= EPS)) { cur_page_fully_visible = true; } else if (page_visible_ratio > max_visible_ratio) { max_visible_ratio = page_visible_ratio; @@ -610,7 +609,7 @@ Viewer.prototype = { var old_scale = this.scale; var new_scale = old_scale; // set new scale - if (ratio == 0) { + if (ratio === 0) { new_scale = 1; is_relative = false; } else if (is_relative) @@ -671,7 +670,7 @@ Viewer.prototype = { get_containing_page : function(ele) { /* get the page obj containing obj */ while(ele) { - if ((ele.nodeType == Node.ELEMENT_NODE) + if ((ele.nodeType === Node.ELEMENT_NODE) && ele.classList.contains(CSS_CLASS_NAMES.page_frame)) { /* * Get original page number and map it to index of pages @@ -717,9 +716,18 @@ Viewer.prototype = { var target_page_idx = page_map[target_page_no]; var target_page = this.pages[target_page_idx]; + for (var i = 2, l = detail.length; i < l; ++i) { + var d = detail[i]; + if(!((d === null) || (typeof d === 'number'))) + return; + } + + while(detail.length < 6) + detail.push(null); // cur_page might be undefined, e.g. from Outline var cur_page = src_page || this.pages[this.cur_page_idx]; + // TODO: view_position is now in scaled coordination system, but we need in unscaled system var cur_pos = cur_page.view_position(); //get the coordinates in default user system cur_pos = transform(cur_page.ictm, [cur_pos[0], cur_page.height()-cur_pos[1]]); @@ -732,10 +740,10 @@ Viewer.prototype = { // TODO: BBox switch(detail[1]) { case 'XYZ': - pos = [(detail[2] == null) ? cur_pos[0] : detail[2] - ,(detail[3] == null) ? cur_pos[1] : detail[3]]; + pos = [(detail[2] === null) ? cur_pos[0] : detail[2] + ,(detail[3] === null) ? cur_pos[1] : detail[3]]; zoom = detail[4]; - if ((zoom == null) || (zoom == 0)) + if ((zoom === null) || (zoom === 0)) zoom = this.scale; ok = true; break; @@ -746,16 +754,17 @@ Viewer.prototype = { break; case 'FitH': case 'FitBH': - pos = [0, (detail[2] == null) ? cur_pos[1] : detail[2]]; + pos = [0, (detail[2] === null) ? cur_pos[1] : detail[2]]; ok = true; break; case 'FitV': case 'FitBV': - pos = [(detail[2] == null) ? cur_pos[0] : detail[2], 0]; + pos = [(detail[2] === null) ? cur_pos[0] : detail[2], 0]; ok = true; break; case 'FitR': /* locate the top-left corner of the rectangle */ + // TODO pos = [detail[2], detail[5]]; upside_down = false; ok = true; @@ -814,4 +823,5 @@ Viewer.prototype = { } }; +// export pdf2htmlEX.Viewer pdf2htmlEX['Viewer'] = Viewer;