[Kazehakase-cvs] CVS update: kazehakase/data/ext/ruby/kz/actions

アーカイブの一覧に戻る

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)


More information about the Kazehakase-cvs mailing list
アーカイブの一覧に戻る