namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pdftotext (Re: namazu 1.3.0.8 patch for mknmz)



  namazu-devに振ります。

<199908120744.QAA18484@xxxxxxxxxxxxxx>の記事において
satoru-t@xxxxxxxxxxxxxxxxxxさんは書きました。

>> >>#そういえば xpdf が 0.90 になって -eucjp で出力できるように
>> >>#なっていました。 :-)

  これを利用したPDFフィルタを実装してみました。ついでにmswordviewとlv
を用いたMS-Wordフィルタも完成させ、先程commitしました。

  一応、これでフィルタ回りのTODOは完了したのではないかと思います。

>> 直してもらいました。メイル末尾のパッチをあてると解決します。

  このパッチを含めたバージョンのリリースはすぐには行われないのでしょう
か? 実は既にxpdf-0.90はDebianパッケージになっているので、もしそうであ
ればDebian版だけでもパッチを含めてもらおうと思っているのですけど...

>>   % pdftotext foo.pdf - | less
>> 
>> のようにして日本語の pdf文書が読めます。フィルタとして使える
>> ので mknmz から呼び出すのは簡単ですね。

  しかし、入力側を`-'にすることはできないのですね...

  あと、今回実装するにあたって次のようなコードを書いたのですが、いまい
ちうまく動きませんでした。

    my $fh = util::fopen_or_die("> $TMPFILE");
    print $fh $$cont;
    undef $fh;
    $fh = util::fopen_or_die("@PDFTOTEXT_PATH@ -eucjp $TMPFILE - |");
    $$cont = util::readfile($fh);
    undef $fh;

  pdftotextの出力が空になってしまうのです。しかし、これをデバッガで一
つ一つステップ実行させるとうまくゆくという、いまいち釈然としない挙動を
します。

# FileHandle回りを調べたら何か説明があるかな...

  とりあえず、次のようにすることで安定して動作させています。

    my $fh = util::fopen_or_die("> $TMPFILE");
    print $fh $$cont;
    undef $fh;

    system("@PDFTOTEXT_PATH@ -eucjp $TMPFILE $TMPFILE2");
    $fh = util::fopen_or_die("< $TMPFILE2");
    $$cont = util::readfile($fh);
    undef $fh;

  そろそろmain trunkにmergeしたいですね。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)