diff --git a/share/pdf2htmlEX.js b/share/pdf2htmlEX.js index 7335550..7d9d4d7 100644 --- a/share/pdf2htmlEX.js +++ b/share/pdf2htmlEX.js @@ -10,168 +10,166 @@ * Copyright 2012 Lu Wang */ -var pdf2htmlEX = (function(){ - return { - pages : [], - page_boxes : [], - container : null, - selective_render_timer : null, - default_scale_ratio : 1.0, - cur_scale_ratio : 1.0, +var pdf2htmlEX = { + pages : [], + page_boxes : [], + container : null, + selective_render_timer : null, + default_scale_ratio : 1.0, + cur_scale_ratio : 1.0, - /* Constants */ - render_timeout : 200, - scale_step : 0.9, + /* Constants */ + render_timeout : 200, + scale_step : 0.9, - init_before_loading_content : function() { - /*hide all pages before loading, will reveal only visible ones later */ - this.pre_hide_pages(); - }, + init_before_loading_content : function() { + /*hide all pages before loading, will reveal only visible ones later */ + this.pre_hide_pages(); + }, - init_after_loading_content : function() { - this.pages = $(".p"); - this.page_boxes = $(".b"); - this.container = $("#pdf-main"); + init_after_loading_content : function() { + this.pages = $(".p"); + this.page_boxes = $(".b"); + this.container = $("#pdf-main"); - if(this.pages.length > 0) - { - this.default_scale_ratio = this.cur_scale_ratio - = $(this.pages[0]).height() / $(this.page_boxes[0]).height(); - } + if(this.pages.length > 0) + { + this.default_scale_ratio = this.cur_scale_ratio + = $(this.pages[0]).height() / $(this.page_boxes[0]).height(); + } - this.selective_render(); + this.selective_render(); - var _ = this; - this.container.scroll(function(){ _.schedule_render(); }); - this.zoom_fixer(); - }, + var _ = this; + this.container.scroll(function(){ _.schedule_render(); }); + this.zoom_fixer(); + }, - init : function() { - this.init_before_loading_content(); + init : function() { + this.init_before_loading_content(); - var _ = this; - $(document).ready(function(){_.init_after_loading_content();}); + var _ = this; + $(document).ready(function(){_.init_after_loading_content();}); - return this; - }, + return this; + }, - pre_hide_pages : function() { - /* pages might have not been loaded yet, so add a CSS rule */ - var s = '.b{display:none;}'; - var n = document.createElement("style"); - n.type = "text/css"; - if (n.styleSheet) { - n.styleSheet.cssText = s; - } else { - n.appendChild(document.createTextNode(s)); - } - document.getElementsByTagName("head")[0].appendChild(n); - }, + pre_hide_pages : function() { + /* pages might have not been loaded yet, so add a CSS rule */ + var s = '.b{display:none;}'; + var n = document.createElement("style"); + n.type = "text/css"; + if (n.styleSheet) { + n.styleSheet.cssText = s; + } else { + n.appendChild(document.createTextNode(s)); + } + document.getElementsByTagName("head")[0].appendChild(n); + }, - hide_pages : function() { - for(var i = 0, l = this.page_boxes.length; i < l; ++i) - { - $(this.page_boxes[i]).hide(); - } - }, + hide_pages : function() { + for(var i = 0, l = this.page_boxes.length; i < l; ++i) + { + $(this.page_boxes[i]).hide(); + } + }, - selective_render : function () { - /* hide (positional) invisible pages */ - var l = this.pages.length; - var ch = this.container.height(); - - var i; - for(i = 0; i < l; ++i) { - var cur_page = $(this.pages[i]); + selective_render : function () { + /* hide (positional) invisible pages */ + var l = this.pages.length; + var ch = this.container.height(); + + var i; + for(i = 0; i < l; ++i) { + var cur_page = $(this.pages[i]); - if(cur_page.offset().top + cur_page.height() >= 0) break; - if(i > 0) $(this.page_boxes[i-1]).hide(); - } + if(cur_page.offset().top + cur_page.height() >= 0) break; + if(i > 0) $(this.page_boxes[i-1]).hide(); + } - if((i > 0) && (i < l)) $(this.page_boxes[i-1]).show(); + if((i > 0) && (i < l)) $(this.page_boxes[i-1]).show(); - for(; i < l; ++i) { - $(this.page_boxes[i]).show(); + for(; i < l; ++i) { + $(this.page_boxes[i]).show(); - if($(this.pages[i]).offset().top > ch) break; - } + if($(this.pages[i]).offset().top > ch) break; + } - for(++i; i < l; ++i) { - $(this.page_boxes[i]).hide(); - } - }, + for(++i; i < l; ++i) { + $(this.page_boxes[i]).hide(); + } + }, - schedule_render : function() { - if(this.selective_render_timer) - clearTimeout(this.selective_render_timer); + schedule_render : function() { + if(this.selective_render_timer) + clearTimeout(this.selective_render_timer); - var _ = this; - this.selective_render_timer = setTimeout(function () { - _.selective_render(); - }, this.render_timeout); - }, + var _ = this; + this.selective_render_timer = setTimeout(function () { + _.selective_render(); + }, this.render_timeout); + }, - zoom_fixer : function () { - /* - * When user try to zoom in/out using ctrl + +/- or mouse wheel - * handle this and prevent the default behaviours - * - * Code credit to PDF.js - */ - var _ = this; - // Firefox specific event, so that we can prevent browser from zooming - $(window).on('DOMMouseScroll', function(e) { - if (e.ctrlKey) { - e.preventDefault(); - _.rescale(Math.pow(_.scale_step, e.detail), true); - } - }); - - $(window).on('keydown', function keydown(e) { - if (e.ctrlKey || e.metaKey) { - switch (e.keyCode) { - case 61: // FF/Mac '=' - case 107: // FF '+' and '=' - case 187: // Chrome '+' - _.rescale(1.0 / _.scale_step, true); - break; - case 173: // FF/Mac '-' - case 109: // FF '-' - case 189: // Chrome '-' - _.rescale(_.scale_step, true); - break; - case 48: // '0' - _.rescale(_.default_scale_ratio, false); - break; - default: - return; - } - } + zoom_fixer : function () { + /* + * When user try to zoom in/out using ctrl + +/- or mouse wheel + * handle this and prevent the default behaviours + * + * Code credit to PDF.js + */ + var _ = this; + // Firefox specific event, so that we can prevent browser from zooming + $(window).on('DOMMouseScroll', function(e) { + if (e.ctrlKey) { e.preventDefault(); - }); - }, - - rescale : function (ratio, is_relative) { - console.log('RESCALE'); - - if(is_relative) - ratio *= this.cur_scale_ratio; - - this.cur_scale_ratio = ratio; - this.hide_pages(); - - for(var i = 0, l = this.page_boxes.length; i < l; ++i) - { - var p = $(this.pages[i]); - var pb = $(this.page_boxes[i]); - p.height(pb.height() * ratio); - p.width(pb.width() * ratio); - pb.css('transform', 'scale('+ratio.toFixed(3)+')'); + _.rescale(Math.pow(_.scale_step, e.detail), true); } + }); - this.schedule_render(); - }, + $(window).on('keydown', function keydown(e) { + if (e.ctrlKey || e.metaKey) { + switch (e.keyCode) { + case 61: // FF/Mac '=' + case 107: // FF '+' and '=' + case 187: // Chrome '+' + _.rescale(1.0 / _.scale_step, true); + break; + case 173: // FF/Mac '-' + case 109: // FF '-' + case 189: // Chrome '-' + _.rescale(_.scale_step, true); + break; + case 48: // '0' + _.rescale(_.default_scale_ratio, false); + break; + default: + return; + } + } + e.preventDefault(); + }); + }, - __last_member__ : 'no comma' /*,*/ - }.init(); -})(); + rescale : function (ratio, is_relative) { + console.log('RESCALE'); + + if(is_relative) + ratio *= this.cur_scale_ratio; + + this.cur_scale_ratio = ratio; + this.hide_pages(); + + for(var i = 0, l = this.page_boxes.length; i < l; ++i) + { + var p = $(this.pages[i]); + var pb = $(this.page_boxes[i]); + p.height(pb.height() * ratio); + p.width(pb.width() * ratio); + pb.css('transform', 'scale('+ratio.toFixed(3)+')'); + } + + this.schedule_render(); + }, + + __last_member__ : 'no comma' /*,*/ +}.init(); diff --git a/src/pdf2htmlEX.cc b/src/pdf2htmlEX.cc index 449482c..a24bdfc 100644 --- a/src/pdf2htmlEX.cc +++ b/src/pdf2htmlEX.cc @@ -73,7 +73,7 @@ void parse_options (int argc, char **argv) .add("heps", ¶m.h_eps, 1.0, "max tolerated horizontal offset (in pixels)") .add("veps", ¶m.v_eps, 1.0, "max tolerated vertical offset (in pixels)") .add("space-threshold", ¶m.space_threshold, (1.0/8), "distance no thiner than (threshold * em) will be considered as a space character") - .add("font-size-multiplier", ¶m.font_size_multiplier, 8.0, "setting a value greater than 1 would increase the rendering accuracy") + .add("font-size-multiplier", ¶m.font_size_multiplier, 4.0, "setting a value greater than 1 would increase the rendering accuracy") .add("auto-hint", ¶m.auto_hint, 0, "[Experimental] Whether to generate hints for fonts") .add("tounicode", ¶m.tounicode, 0, "Specify how to deal with ToUnicode map, 0 for auto, 1 for forced, -1 for disabled") .add("space-as-offset", ¶m.space_as_offset, 0, "treat space characters as offsets")