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を追加するように直す。
といった方法が考えられます。
臼田幸生