Rubyでpdfファイルを読み込む方法

このQ&Aのポイント
  • Rubyでpdfファイルを読み込む方法を探しています。
  • pdfをtxt形式に変換する方法も知りたいです。
  • Windows環境での解決方法を教えてください。
回答を見る
  • ベストアンサー

Rubyでpdfファイルを読み込む方法

Rubyでpdfファイルを読み込む方法を探しています。 file = open("sample.pdf", "r") file.each { |f| puts f } というコードを書いて実行すると文字化け?したようになったり、数字ばかりの行が挿入されていたりと、txt形式のファイルを読み込んだ時の様に文字が正しく出力されません。 何かpdfを読み込む正しい方法があるのでしょうか。 また、直接読み込むことはせずにpdftotext.exeを使って予めtxt形式に変換しようと考えたのですが、Rubyのスクリプトの中でpdftotext.exeを使う方法が分かりません。 解決方法をご存じの方がいらっしゃいましたら教えて頂けないでしょうか。 環境はWindowsです。よろしくお願いします。

  • Ruby
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

> pdftotext.exeを使って予めtxt形式に変換 コマンドラインで使用するコマンドをそのままsystemで実行すれば良いと思います。 ----- PDFTOTEXT = ' "c:\Program files\Xpdf\pdftotext.exe" ' OPT = ' -enc Shift-JIS' filename = "foo.pdf" system("#{PDFTOTEXT} #{OPT} #{filename}") ----- ファイルパスやオプションは適宜修正が必要です。

sen231567
質問者

お礼

回答ありがとうございました。コマンドを実行することが出来ました。

関連するQ&A

  • rubyでPDFファイルを読みたい

    PDFファイルを、rubyで読み込みたいのですが、 そのようなことを可能にする方法(ライブラリ)は、ありますでしょうか? つまり、 f = open "index.txt" f.each do |line|  puts line end この場合の「index.txt」が、テキストファイルでなく、 「index.pdf」というPDFファイルだった場合にも 同様の出力結果を期待したい、ということです。 (バイナリデータではなく、テキストデータを出力したい。) 実現手段をご存知の方がいましたら、何卒、教えて下さい。

  • ruby テキストファイル書き出しでの文字化け

    ruby&mac&文字の扱い 初心者です。 mac os 10.6.8 HTMLの情報を読み込みテキストファイルに書き出したいのですが、 ターミナル上、putsではきちんと日本語で表示されるのですが、書き出したあとの txtファイルを開くと文字化けしています。 File.open("test.txt","w") do |file| @s_info.each do |data| puts data[:m_sec] file.puts data[:m_sec] end end よろしくお願いします。

    • ベストアンサー
    • Ruby
  • 【Ruby】テキスト置換を1ファイル完結にしたい

    memo.txtの中に含まれている"俺の飯"という文字列を"私のごはん"というふうに置換を行いたいのですが、 現在のやり方だとファイルを開いて1行ずつ読み込んで新しいファイルに文字列を書きだしており 読み込んだ際、置換対象の文字列があった場合に置換して書きだしておりますが このやり方だとどうしても新規ファイルを出力しなければいけません。 これを新規ファイルを作らずにmemo.txtの中身だけを書き換えるようにするには どのような処理にすれば良いのでしょうか? 何卒宜しくお願い致します。 ---- sample.rb require 'rubygems' open("memo.txt"){ |f| open("after_memo.txt","w"){ |o| while line = f.gets line.gsub!("俺の飯", "私のごはん") o.puts line end } } -- memo.txt 俺の飯はリーズナブル! 俺の飯美味しそう!

    • ベストアンサー
    • Ruby
  • Rubyについて

    Rubyの環境について: ●Rubyのダウンロード(ruby186-26.exe) 環境変数を設定しました。 テキストエディタを利用せずにRDEをインストールしました。 ●RDEの最新版のファイルをダウンロード(RDE1.1.1_setup.exe) RDEでプログラムの作成と実行してみます。 RDE画面のエディタウィンドウに日本語を入力すると、文字化けになります。そこで、実行してみます。コンソールウィンドウでは、入力した文字が文字化けせずに表示されました。 どうしましたら、エディタウィンドウは文字化けせずに日本語が表示されますか? 困ってます。 ご指導お願いいたします。

  • Rubyのpopen3について

    はじめまして Rubyをはじめて1か月の初心者です。 popen3を使用するにあたって大変困っております。 popen3で外部コマンドを実行して、実行結果の標準出力をファイルとして格納しようと思っています。 外部コマンドの内容は、SSH接続でサーバへログインし、そこにあるシェルスクリプトを実行させるもので、 呼び出すシェルスクリプトに対して、Rubyから標準入力を渡し、シェルスクリプトが標準入力を受け取り、 それをもとに呼び出したシェルスクリプトがさらに別のシェルスクリプトを呼び出し、実行結果を標準出力としてRubyで受け取ってファイルに格納したいと思っています。 ソースとしては、以下のようにしてますが、標準入力を引き渡す方法が分かりません。 その為、標準入力を引き渡す部分は記述していません。 Open3.popen3('ssh localhost sh test.sh ') do |stdin, stdout, stderr|   begin    loop do     IO.select([stdout,stderr]).flatten.compact.each { |io|      if stdout != "" then       stdout_lines = stdout        puts("stdout_lines = " + stdout_lines)      end      stderr_lines = stderr if stderr != ""      puts("stderr_lines = " + stderr_lines)     }     break if $stdout.classed? && $stderr.closed?   end   rescue EOFError   end end JRubyの1.6.8なので、Rubyのバージョンは1.8.7相当です。 なにぶん初心者の為、なにをどうすれば良いか分からない状態です。 まず、実現が可能かを知りたいです。 実現可能であれば、標準入力を引き渡す方法を教えていただきたく。 よろしくお願いします。

  • rubyでバイナリファイルを直接数字に変換する方法

    rubyでバイナリファイルを扱う練習をしていますが、バイナリを読み込み数字として使う際、それまでにストリングに変え、intにするなど複数の処理を行わなければ扱えないようなのですが、もっとシンプルな方法はありませんでしょうか。下記がそのサンプルです。 どうぞよろしくお願いいたします。 b = File.new("test.bin", "w") s= [31].pack('c') b.print s # 1F b.close infp = File.open("test.bin","r") s=infp.read(1) infp.close s=s.unpack('c') s=s.to_s s=s.to_i s=s+2 puts s # 33

  • rubyのループ

    ruby初心者です。 配列のループ処理において [12,3,123,123,12,3,123,123,12,312,123][0..3].each{|val| puts val } というように、上記 [0..3] のような対象を指定するようなことを をよくやるのですが、 ハッシュに対して同様のことって、どう書けば良いのでしょうか? 何か方法があるのでしょうか? 教えてください。

  • Ruby WEBrick cgiからgifが最後まで送れない。

    以下のようなHTTPサーバをWinXp上で動かしました。 #$ruby = "C:/ruby/bin/ruby.exe" require 'webrick' srv = WEBrick::HTTPServer.new({ :BindAddress => 'xxx.xxx.xxx.xxx', :CGIInterpreter => "c:/ruby/bin/ruby.exe", :Port => 80 }) srv.mount("/", WEBrick::HTTPServlet::FileHandler, "./", {:FancyIndexing=>true}) srv.start そして、以下のようなCGIをよびます。 #!/usr/bin/ruby STDOUT.binmode open("hoge.gif", "r") do |f| f.binmode body = f.read puts "content-type: image/gif" puts "content-length: #{body.size.to_s}" puts "" print body end すると、content-length分のHTTPボディーが送られてきません。 2種類のgifで試しましたが、193byte/724byte、289byte/451byteでした。 バージョンは、ruby 1.8.6、WEBrick 1.3.1です。 何が原因でしょうか?

  • pdfファイルをtxtファイルに

    pdf形式のファイルをtxt形式のファイルに変換したいです。ちなみにpdf形式のファイル200ページほどあります。教えてください。お手数ですが宜しくお願いします。

  • Ruby の実行について

    Ruby初心者です。 メモ帳で puts "hello world"と打ち、名前をsample.rbにし、c:\Users\rbというファイルに保存しました。次にコマンドプロンプトで c:\Users\rb>ruby sample.rb と入力したんですが、'ruby'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。といわれました。 どうすればいいのですか? 本を見てもネット上のサイトをみても >ruby ●●.rb なんです。

    • ベストアンサー
    • Ruby

専門家に質問してみよう