Kouhei Sutou
kous****@users*****
Sat May 27 19:07:24 JST 2006
Index: kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.erb diff -u kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.erb:1.2 kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.erb:1.3 --- kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.erb:1.2 Tue May 23 17:42:19 2006 +++ kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.erb Sat May 27 19:07:24 2006 @@ -35,6 +35,13 @@ { border-style: none; } + +div.text pre +{ + margin: 1em; + padding: 1em; + border: 2px solid black; +} </style> <script type="text/javascript"> function handle_key(e) @@ -43,6 +50,7 @@ var handled = true; switch (key_code) { +<% unless text_mode? %> <% unless first_image? -%> <% MOVE_TO_FIRST_KEYS.each do |key| -%> case <%= key %>: @@ -74,7 +82,14 @@ <% TOGGLE_INDEX_MODE_KEYS.each do |key| -%> case <%= key %>: <% end -%> - location = "<%= toggle_mode_href %>"; + location = "<%= toggle_index_mode_href %>"; + break; +<% end %> + +<% TOGGLE_TEXT_MODE_KEYS.each do |key| -%> + case <%= key %>: +<% end -%> + location = "<%= toggle_text_mode_href %>"; break; default: Index: kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.rb diff -u kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.rb:1.4 kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.rb:1.5 --- kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.rb:1.4 Tue May 23 17:40:32 2006 +++ kazehakase/data/ext/ruby/kz/actions/view-pdf-as-image.rb Sat May 27 19:07:24 2006 @@ -30,6 +30,10 @@ def index_html "index.html" end + + def text_html + "text.html" + end end extend Util @@ -66,13 +70,13 @@ pixbuf = Gdk::Pixbuf.new(Gdk::Pixbuf::COLORSPACE_RGB, true, 8, width, height) - page.render_to_pixbuf(0, 0, width, height, 1, 0, pixbuf) + page.render(0, 0, width, height, 1, 0, pixbuf) output = File.join(tmp_dir, image_name(i)) pixbuf.save(output, image_type) pixbuf = Gdk::Pixbuf.new(Gdk::Pixbuf::COLORSPACE_RGB, true, 8, pixbuf_width, pixbuf_height) - page.render_to_pixbuf(0, 0, width, height, scale, 0, pixbuf) + page.render(0, 0, width, height, scale, 0, pixbuf) thumbnail = File.join(tmp_dir, thumbnail_name(i)) pixbuf.save(thumbnail, image_type) @@ -152,6 +156,10 @@ Gdk::Keyval::GDK_i, ] + TOGGLE_TEXT_MODE_KEYS = [ + Gdk::Keyval::GDK_t, + ] + template_path = Kz::Actions.search_file("view-pdf-as-image.erb") erb = File.open(template_path) {|f| ERB.new(f.read, nil, "-")} erb.def_method(self, "to_html", template_path) @@ -164,13 +172,21 @@ def save index_html_file = File.join(@base_dir, index_html) + text_html_file = File.join(@base_dir, text_html) @image_number = 0 + File.open(index_html_file, "w") do |index| @index_mode = true index << to_html end - @index_mode = false + + File.open(text_html_file, "w") do |text| + @text_mode = true + text << to_html + end + @text_mode = false + @doc.n_pages.times do |i| path = File.join(@base_dir, html_name(i)) @image_number = i @@ -190,7 +206,7 @@ end def content - if @index_mode + if index_mode? result = "<div class=\"thumbnails\">\n" @doc.n_pages.times do |i| result << "<a href=\"#{h html_name(i)}\">\n" @@ -199,6 +215,15 @@ end result << "</div>" result + elsif text_mode? + result = "<div class=\"text\">\n" + @doc.each do |page| + width, height = page.size + rectangle = Poppler::Rectangle.new(0, 0, width, height) + result << "<pre class=\"page\">#{h page.get_text(rectangle)}</pre>" + end + result << "</div>" + result else "<div class=\"image\">\n#{image}\n</div>" end @@ -230,6 +255,10 @@ @index_mode end + def text_mode? + @text_mode + end + def first_image?(image_number=nil) image_number ||= @image_number image_number.zero? @@ -274,7 +303,7 @@ href(last_index(image_number)) end - def toggle_mode_href + def toggle_index_mode_href if index_mode? first_href else @@ -282,6 +311,14 @@ end end + def toggle_text_mode_href + if text_mode? + index_html + else + text_html + end + end + def href(image_number) image_number ||= @image_number u(html_name(image_number)) @@ -322,18 +359,21 @@ def toggle_mode_navi @index_mode = !@index_mode - if index_mode? + if index_mode? or text_mode? result = a_link(index_html, h(_("Thumbnails")), false) else result = a_link(first_href, h(_("Image")), false) end + unless text_mode? + result << a_link(text_html, h(_("Text")), false) + end "<div class=\"toggle-mode\">\n#{result}\n</div>" ensure @index_mode = !@index_mode end def navi(image_number=nil) - return '' if index_mode? + return '' if index_mode? or text_mode? result = '' result << "<div class=\"navi\">\n" result << first_link(image_number)