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を追加するように直す。

といった方法が考えられます。

臼田幸生