Discussion:
[ruby-list:50013] pdfを扱うためのpopplerライブラリをrequireできない
Yoshiizumi
2014-11-20 12:29:58 UTC
Permalink
$B!!$h$7$$$:$_$H$$$$$^$9!#(B

$B!!F|K\8l(B MS-Windows $B$N4D6-$G!"(Bpdf$B$r07$&$?$a$N(Bruby$BMQ%i%$%V%i%j(B poppler
$B$r(Bgem$B$G%$%s%9%H!<%k$7$***@.8y$7$?$N$G$9$,!"(Brequire$B$7$h$&$H$9$k$H%(%i!<$,(B
$BH/@8$7$^$9!#(B
$B!!!V$3$s$J%U%!%$%k$,B-$j$J$$$N$G$O$J$$$+!W$J$I!"%"%I%P%$%9$,$"$l$P$*4j(B
$B$$$7$^$9!#(B
$B!!<B9T4D6-$O<!$N$H$*$j$G$9!#(B

$B!&#O#S(B: $BF|K\8l(B Windows7, 64bit$BHG(B
$B!&(Bruby: 32bit$BMQ$N(B 2.1.5 | 2.0.0
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]
ruby 2.0.0p598 (2014-11-13) [i386-mingw32]
$B!&(Bpoppler: poppler-2.2.3-x86-mingw32

$B!!(Bruby 2.0.0 $B$r;H$C$F!"!V(Brequire "poppler"$B!W$H$$$&#19T$@$1$N%9%/%j%W%H(B
$B$r<B9T$7$?;~$N%(%i!<%a%C%;!<%8$r2<$K7G$2$^$9!#(B
$B!!(Bruby 2.1.5 $B$G$bF1$87k2L$G$7$?!#(B
$B!!$J$*!"(Bpoppler.so $B$H$$$&%U%!%$%k$O!"(Bgem$B4X78$N%G%#%l%/%H%j2<$K$A$c$s$H(B
$BB8:_$7$^$9!#(B

$B!]!]!]!]!]!]!]!](B
C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- poppler.so (LoadError)
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/ruby200/lib/ruby/gems/2.0.0/gems/poppler-2.2.3-x86-mingw32/lib/poppler.rb:32:in `rescue in <top (required)>'
from C:/ruby200/lib/ruby/gems/2.0.0/gems/poppler-2.2.3-x86-mingw32/lib/poppler.rb:28:in `<top (required)>'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from A:/test.rb:1:in `<main>'
$B!]!]!]!]!]!]!]!](B

$B!!$A$J$_$K!"(Bpoppler$B$r(Bgem$B$G%$%s%9%H!<%k$7$?;~$N4XO"%a%C%;!<%8$O<!$N$H$*(B
$B$j!#(B

$B!]!]!]!]!]!]!]!](B
Successfully installed poppler-2.2.3-x86-mingw32
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/2.0/poppler.so, skipping
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/2.1/poppler.so, skipping
$B!]!]!]!]!]!]!]!](B

$B!!<B$O!"(Bpoppler$B$@$1$r%$%s%9%H!<%k$7$?$o$1$G$O$J$/!"(Brabbit($B%W%l%<%s%F!<(B
$B%7%g%sMQ%3%^%s%I(B)$B$r(Bgem$B$G%$%s%9%H!<%k$7$^$7$?!#$=$NCf$G(B poppler $B$b%$%s(B
$B%9%H!<%k$5$l$?$b$N$G$9!#(B
$B!!%$%s%9%H!<%k;~$K(B Error $B$N%a%C%;!<%8$O=P$:!"4XO"$N%i%$%V%i%j0l<0$,$9(B
$B$Y$F(B Successfully $B$G$7$?!#(B
$B!!2?$+JLESF~<j$9$kI,MW$N$"$k%U%!%$%k$,$"$k$N$G$7$g$&$+!#(B
$B!!$4B8$8$NJ}$,$$$^$7$?$i!"=u8@$r$*4j$$$7$^$9!#(B
Masafumi Yokoyama
2014-11-20 16:12:24 UTC
Permalink
Ruby/Poppler開発チームの横山です。
 よしいずみといいます。
 日本語 MS-Windows の環境で、pdfを扱うためのruby用ライブラリ poppler
をgemでインストールして成功したのですが、requireしようとするとエラーが
発生します。
 「こんなファイルが足りないのではないか」など、アドバイスがあればお願
いします。
報告ありがとうございます!
私の手元でも再現したので、gemの問題だと思います。
 実行環境は次のとおりです。
・OS: 日本語 Windows7, 64bit版
・ruby: 32bit用の 2.1.5 | 2.0.0
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]
ruby 2.0.0p598 (2014-11-13) [i386-mingw32]
・poppler: poppler-2.2.3-x86-mingw32
 ruby 2.0.0 を使って、「require "poppler"」という1行だけのスクリプト
を実行した時のエラーメッセージを下に掲げます。
 ruby 2.1.5 でも同じ結果でした。
 なお、poppler.so というファイルは、gem関係のディレクトリ下にちゃんと
存在します。
--------
C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- poppler.so (LoadError)
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/ruby200/lib/ruby/gems/2.0.0/gems/poppler-2.2.3-x86-mingw32/lib/poppler.rb:32:in `rescue in <top (required)>'
from C:/ruby200/lib/ruby/gems/2.0.0/gems/poppler-2.2.3-x86-mingw32/lib/poppler.rb:28:in `<top (required)>'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from C:/ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from A:/test.rb:1:in `<main>'
--------
このエラーですが、実はpoppler.soの中身に不備があるときも出ます。
わかりにくいので、改善できるか検討してみます。
 ちなみに、popplerをgemでインストールした時の関連メッセージは次のとお
り。
--------
Successfully installed poppler-2.2.3-x86-mingw32
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/2.0/poppler.so, skipping
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/2.1/poppler.so, skipping
--------
 実は、popplerだけをインストールしたわけではなく、rabbit(プレゼンテー
ション用コマンド)をgemでインストールしました。その中で poppler もイン
ストールされたものです。
 インストール時に Error のメッセージは出ず、関連のライブラリ一式がす
べて Successfully でした。
 何か別途入手する必要のあるファイルがあるのでしょうか。
 ご存じの方がいましたら、助言をお願いします。
RabbitはPDFを読み込むときにPopplerを使っていると思うのですが、
テキストを読み込んで動かす分には問題ないので気づいていませんでした。

で、poppler.soの中身を見たところ、以下のような問題でした。

* libpoppler-glib-8.dllはlibstdc++-6.dllに依存している
* libstdc++-6.dllが依存しているlibgcc_s_dw2-1.dllがglib2 gemの2.2.3に含まれていない
* poppler gemの2.2.3がlibstdc++-6.dllの_ZSt24__throw_out_of_range_fmtPKcz(0x0AF4)
を使おうとしているが、MinGWに含まれるlibstdc++-6.dllにはそのfunctionがないっぽい。

もしお急ぎでしたら、poppler gemと、依存しているgdk_pixbuf2 gem、glib2 gemの
バージョンを2.2.0に落として、さらにlibstdc++-6.dllをどこかから持ってきて
パスが通った場所に置けば動くと思います。

根本解決にはなっていませんが、今日調べられたのはここまででした。

参考:「指定されたプロシージャが見つかりません。」の調べ方(Dependency Walker編)
http://myokoym.github.io/entries/20131204/a0.html
Yoshiizumi
2014-11-21 13:08:43 UTC
Permalink
$B!!$h$7$$$:$_$G$9!#(B

$B!!2#;3$5$s!"(Bpoppler$B$N%H%i%V%k$K4X$9$k>\:Y$J>pJs$r$"$j$,$H$&$4$6$$$^$7(B
$B$?!#(B
$B!!F~$jAH$s$@=hM}$,9T$o$l$F$$$k$h$&$G$9$M!#3+H/$bBgJQ$@$m$&$H;W$$$^$9!#(B

$B!!(Brabbit$B$O!"%@%$%l%/%H$K%F%-%9%H$r<h$j9~$s$G%W%l%<%s$G$-$k$N$GJXMx$@$H(B
$B;W$$$^$9!#(B
$B!!$^$@<BA)E*$H$$$&$h$j$O;n$7$K;H$o$;$F$$$?$@$$$F$$$kDxEY$G$9$,!"$*$$$*(B
$B$$47$l$F$$$-$?$$$H;W$C$F$$$^$9!#(B

$B!!M>CL$G$9$,!";d$O;k3P>c32<T$G!"2hLL$r8+$k$3$H$,$G$-$^$;$s!#(B
$B!!$=$N$?$a!"869F$N%\%j%e!<%`$,B?$/$F%9%i%$%I$KI=<($7$-$l$J$$ItJ,$,=P$F(B
$B$7$^$C$F$$$J$$$+$I$&$+!"2hLL$G3NG'$9$k$3$H$,$G$-$^$;$s!#(B
$B!!$=$3$G!"(Brabbit$B$G(Bpdf$B$***@8@.$7!"$=$N(Bpdf$B$r2;@<=PNO$GFI$_>e$2$5$;$k$3$H$K(B
$B$h$C$F%A%'%C%/$7$^$9!#2hA|$N%A%'%C%/$O$G$-$^$;$s$,!#(B
$B!!$=$N>l9g!"(Bpdf$B$=$N$^$^$r%A%'%C%/$9$k$h$j!"%F%-%9%H$KJQ49$7$F%(%G%#%?(B
$B$G%A%'%C%/$7$?J}$,B.$/$F4JC1$J$N$G!"(B
$B!!(B1) rabbit$B$K$h$k(Bpdf$B$***@8@.!"(B2) pdf$B"*%F%-%9%HJQ49$r0l3g$7$F$d$m$&$H;n$_(B
$B$^$7$?!#(B
$B!!$3$N#2HVL\$N%9%F%C%W$G(B poppler $B$r;H$*$&$H$7$F!"%(%i!<$KAx6x$7$?$H$$(B
$B$&$o$1$G$9!#(B
$B!!(Bpdf$B"*%F%-%9%HJQ49$K$O$$$/$D$+J}K!$,$"$j$^$9$,!"(Brabbit$B$G:NMQ$5$l$F$$(B
$B$k(B poppler $B$r;H$&$N$,$$$$$H9M$($?$b$N$G$9!#(B

$B!!(Brabbit$BMQ$N869F%F%-%9%H$r=q$/>l9g!"$I$&$7$F$***@9$j9~$`>pJs$,B?$/$J$j$,(B
$B$A$G$9!#(B
$B!!7k2LE*$K!"I=<($N<h$j$3$\$7$,H/@8$7$F$7$^$&$3$H$,$"$j$^$9!#(B
$B!!$$$D$***@24c<T$N?M$K8+$F$b$i$&$N$O!"2HB2$H$$$($I$b5$$r$D$+$$$^$9!#FC$K(B
$B;n9T:x8m$NCJ3,$@$HEY=E$J$k$N$G!#(B

$B!!M>7W$J$3$H$r=q$-$^$7$?!#(B
$B!!$H$b$"$l(B rabbit, poppler $B$J$I$NM-MQ@-$K$O46C2$7!"$^$?99$J$k3+H/$K4|(B
$BBT$7$F$$$^$9(B($BO?2;%G!<%?$J$I$b07$($k$H!!$&$l$7$$$G$9(B)$B!#(B
$B!!<h$j5^$.$*Ni$^$G!#(B
Kouhei Sutou
2014-11-21 15:53:17 UTC
Permalink
$B?\F#$G$9!#(B

In <***@tyoshiizumiPC>
"[ruby-list:50015] Re: pdf$B$r07$&$?$a$N(Bpoppler$B%i%$%V%i%j$r(Brequire$B$G$-$J$$(B" on Fri, 21 Nov 2014 22:08:43 +0900,
Post by Yoshiizumi
$B!!2#;3$5$s!"(Bpoppler$B$N%H%i%V%k$K4X$9$k>\:Y$J>pJs$r$"$j$,$H$&$4$6$$$^$7(B
$B$?!#(B
$B2#;3$5$s$,D4$Y$F$/$l$?!V(Blibstdc++-6.dll$B!W$O(Bpango gem$B$NCf$KF~$C(B
$B$F$$$k$N$G!"$3$s$JIw$K(Bpoppler$B$h$jA0$K(Bpango$B$r(Brequire$B$7$F$_$F(B
$B$/$@$5$$!*(B

require "pango"
require "poppler"

$B!J<!2s$N%j%j!<%9$+$i$O$3$&$$$&$3$H$r$7$J$/$F$b$h$$$h$&$K$7$^(B
$B$9!#!K(B
Post by Yoshiizumi
$B;W$$$^$9!#(B
$B$=$l$O$H$F$b$h$+$C$?$G$9!*(B
$B;d$O!"%F%-%9%H$G%9%i%$%I$r:n$C$?$j4IM}$7$?$j$7$?$+$C$?$N$G(B
Rabbit$B$r:n$C$?$N$G!"$=$3$,JXMx$@$H;W$C$F$b$i$($F$&$l$7$$$G$9!#(B
$B%W%m%0%i%^!<$J$i%9%i%$%I$b%P!<%8%g%s4IM}$7$?$$$J$!$H;W$C$?$s(B
$B$G$9$h$M!#(B
Post by Yoshiizumi
$B!!$=$N$?$a!"869F$N%\%j%e!<%`$,B?$/$F%9%i%$%I$KI=<($7$-$l$J$$ItJ,$,=P$F(B
$B$7$^$C$F$$$J$$$+$I$&$+!"2hLL$G3NG'$9$k$3$H$,$G$-$^$;$s!#(B
$B$h$C$F%A%'%C%/$7$^$9!#2hA|$N%A%'%C%/$O$G$-$^$;$s$,!#(B
$B$*$)!"$=$s$JIw$K%A%'%C%/$G$-$k$s$G$9$M!#(B

Rabbit$B$K!"J8;z$,$O$_=P$7$F$$$k$3$H$rJs9p$9$k;EAH$_$r$D$1$F$b(B
$B$$$$$+$b$J$!$H;W$$$^$7$?!#$O$_=P$7$F$$$k$3$H$r8!=P$9$k$3$H$O(B
$B4JC1$J$N$G!"$I$&$d$C$FJs9p$9$k$N$,$h$$$+!"$J$s$G$9$1$I!#!#!#(B
Post by Yoshiizumi
$B!!(Bpdf$B"*%F%-%9%HJQ49$K$O$$$/$D$+J}K!$,$"$j$^$9$,!"(Brabbit$B$G:NMQ$5$l$F$$(B
$B$k(B poppler $B$r;H$&$N$,$$$$$H9M$($?$b$N$G$9!#(B
$B$O$$!"$=$l$,$h$$$H;W$$$^$9!*(B
Post by Yoshiizumi
$BBT$7$F$$$^$9(B($BO?2;%G!<%?$J$I$b07$($k$H!!$&$l$7$$$G$9(B)$B!#(B
$BD9G/!"%5%]!<%H$7$?$$$J$!$H;W$C$F$$$k$N$G!"MhG/$K$O%5%]!<%H$G(B
$B$-$k$h$&$K$,$s$P$j$^$9!*(B

gtk3 gem$B$H(Bclutter gem$B$H(Bclutter-gstreamer gem$B$,(BWindows$B$G$bF0(B
$B$/$h$&$K$J$C$?$N$G!"$h$&$d$/(BRabbit$B$GF02h!&2;@<Kd$a9~$_$N2<=`(B
$BHw$,@0$C$?$J$!$H$$$&>u67$G$9!#!J8=:_$O!"JL%&%#%s%I%&I=<($J$i(B
$BF02h$r:***@8$G$-$^$9!#$?$@!"(BWindows$B$G$OF0$-$^$;$s$,!#!#!#!K(B
Yoshiizumi
2014-11-22 02:42:44 UTC
Permalink
$B!!$h$7$$$:$_$G$9!#(B

$B!!?\F#$5$s!"JV?.$"$j$,$H$&$4$6$$$^$7$?!#(B
$B!!!V(Brequire "pango"$B!W$N#19T$r2C$($k$@$1$G!"(Bpoppler$B$r;H$C$F!"(Bpdf$B$+$i%F(B
$B%-%9%H$rCj=P$G$-$k$h$&$K$J$j$^$7$?!*$H$F$b=u$+$j$^$9!#(B
$B!!;29M$^$G!";d$,;n$7$?%9%/%j%W%H$rE=$jIU$1$F$*$-$^$9!#(Bslide.pdf$B$N%F%-(B
$B%9%H$rI8=`=PNO$K=PNO$7$^$9!#(B

$B!]!]!]!]!]!]!]!]!!$3$3$+$i(B
require "pango"
require "poppler"
pdf_file = "slide.pdf"
document = Poppler::Document.new(pdf_file)
str = ''
document.each do |page|
str += sprintf("%s\n\n%s\n\n", page.get_text, "-"*16)
end
print str # $BJ8;z%(%s%3!<%I$O(B utf-8 $B$K$J$C$F$$$k(B
$B!]!]!]!]!]!]!]!]!!$3$3$^$G(B

$B!!OC$O0c$$$^$9$,!"(Brabbit.bat $B$G(Bpdf$B%U%!%$%k$r1\Mw$7$h$&$H$7$?;~$K!"2<$N(B
$B$h$&$J%(%i!<$,=P$^$7$?!#(B
$B!!(BMS-Windows7, ruby 2.1.5(32bit$BHG(B)$B$r;H$C$?>l9g!"(B
$B!!(BDOS$BAk$G!V(Brabbit.bat slide.pdf [enter]$B!W$r<B9T$7$?;~$N$b$N$G$9!#(B
$B!!(Bslide.pdf $B$O!"(Brabbit$B$***@8@.$7$^$7$?!#(B
$B!!$A$g$C$H5$$K$J$C$?$N$G7G$2$F$_$^$9!#(B

$B!]!]!]!]!]!]!]!]!!$3$3$+$i(B
DL is deprecated, please use Fiddle
C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/source/base.rb:48:in `encode': "\xB5" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/source/base.rb:48:in `read'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/parser/pdf.rb:27:in `parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/parser.rb:19:in `parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/canvas.rb:333:in `block in parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/canvas.rb:726:in `keep_index'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/canvas.rb:330:in `parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/frame.rb:56:in `parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/command/rabbit.rb:702:in `parse'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/command/rabbit.rb:864:in `do_display'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/command/rabbit.rb:51:in `run'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/lib/rabbit/command/rabbit.rb:29:in `run'
from C:/ruby21/lib/ruby/gems/2.1.0/gems/rabbit-2.1.3/bin/rabbit:22:in `<top (required)>'
from C:/ruby21/bin/rabbit:23:in `load'
from C:/ruby21/bin/rabbit:23:in `<main>'
$B!]!]!]!]!]!]!]!]!!$3$3$^$G(B

$B!!<h$j5^$.$*Ni$H$4Js9p$^$G!#(B
Kouhei Sutou
2014-11-23 08:24:33 UTC
Permalink
$B?\F#$G$9!#(B

In <***@tyoshiizumiPC>
"[ruby-list:50017] Re: pdf$B$r07$&$?$a$N(Bpoppler$B%i%$%V%i%j$r(Brequire$B$G$-$J$$(B" on Sat, 22 Nov 2014 11:42:44 +0900,
Post by Yoshiizumi
$B%-%9%H$rCj=P$G$-$k$h$&$K$J$j$^$7$?!*$H$F$b=u$+$j$^$9!#(B
$B$h$+$C$?$G$9!*(B
Post by Yoshiizumi
$B!!;29M$^$G!";d$,;n$7$?%9%/%j%W%H$rE=$jIU$1$F$*$-$^$9!#(Bslide.pdf$B$N%F%-(B
$B%9%H$rI8=`=PNO$K=PNO$7$^$9!#(B
$B$"$j$,$H$&$4$6$$$^$9!*(B
str$B$KCy$a$F$+$i(Bprint$B$;$:$K!"(Bsprintf$B$7$?$b$N$r$9$0$K(Bprint$B$7$F(B
$B$b$$$$$+$b$7$l$^$;$s$M!#(B
Post by Yoshiizumi
$B!]!]!]!]!]!]!]!]!!$3$3$+$i(B
require "pango"
require "poppler"
pdf_file = "slide.pdf"
document = Poppler::Document.new(pdf_file)
str = ''
document.each do |page|
str += sprintf("%s\n\n%s\n\n", page.get_text, "-"*16)
end
print str # $BJ8;z%(%s%3!<%I$O(B utf-8 $B$K$J$C$F$$$k(B
$B!]!]!]!]!]!]!]!]!!$3$3$^$G(B
$B!!OC$O0c$$$^$9$,!"(Brabbit.bat $B$G(Bpdf$B%U%!%$%k$r1\Mw$7$h$&$H$7$?;~$K!"2<$N(B
$B$h$&$J%(%i!<$,=P$^$7$?!#(B
$B!!(BMS-Windows7, ruby 2.1.5(32bit$BHG(B)$B$r;H$C$?>l9g!"(B
$B!!(BDOS$BAk$G!V(Brabbit.bat slide.pdf [enter]$B!W$r<B9T$7$?;~$N$b$N$G$9!#(B
$B!!$A$g$C$H5$$K$J$C$?$N$G7G$2$F$_$^$9!#(B
$BJs9p$"$j$,$H$&$4$6$$$^$9!*(B
$B<B$O!"$3$l$O(Bmaster$B$G$OD>$C$F$$$k$N$G$9!#$J$N$G!"?7$7$$%P!<%8%g(B
$B%s$r%j%j!<%9$7$J$$$H$$$1$^$;$s$M!#!#!#(B

Loading...