Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Re: File::Magicでの挙動
臼田です。
Taiji.Can wrote:
>   RedHat 9 のサーバで mknmz 時に pdf ファイル解析中(前?)に core を吐いて
>   しまい、mknmz が実行できないという問題があります。
略
> % file *
> 5968-5161E.pdf: Macintosh MacBinary data, type "PDF " (Portable Document Format), creator "CARO"
> 5968-5162E.pdf: PDF document, version 1.2
> 5968-5163E.pdf: Macintosh MacBinary data, type "PDF " (Portable Document Format), creator "CARO"
略
>   というもので、2000年頃にファイルタイプのチェックで高林さんと野首さんとで
>   やり取りしたときのスクリプトを入れて試してみました。
>   結果は
略
> manager:/home/manager# File *
> 5968-5161E.pdf: text/plain
> 5968-5162E.pdf: application/pdf
> 5968-5163E.pdf: text/plain
というのを見ると
 5968-5161E.pdfと 5968-5163E.pdfはMacで作成されてMacBinary形式のヘッダが
くっついているのでFile-MMagicがテキストファイルとして誤認識しているのが
原因だろうと思います。
hexdumpコマンドで先頭の200byteほどを出力して比較すると5968-5162E.pdfと
他の2つのファイルではヘッダ部が違うのがわかると思います。
fileコマンドではきちんと認識できているのでFile-MMagicのMagicDataが不足
しているのだと思います。
>   なぜ、この後 core になってしまうかは不明なんですが、pdf だと認識できれば
>   pdftotext では問題ないことがわかっています。
> 
>   どのような対処が必要でしょうか?
対処法1
 MacBinaryのヘッダを取り除くツールを用いて元のpdfファイルを修正する。
 (具体なツールは残念ながら私は知りません)
対処法2
 /usr/share/magicからMacBinary形式pdfファイルに関するMagicDataを拾ってきて
 MMagic.pmに追加、File-MMagicをMakeしなおす。
対処法3
 /usr/share/magicからMacBinary形式pdfファイルに関するMagicDataを拾ってきて
 filter/pdf.plのsub add_magic()で
 $magic->addMagicEntryを用いてMagicDataを追加するように直す。
といった方法が考えられます。
臼田幸生