詳細はhttp://www.foolabs.com/xpdf/(英文)を参照してください。 Namazu2.0.12のリリースに伴い、pdfファイルの文書フィルタであるpdf.plがxpdf1.00以降のpdftotextのオプション変更に対応しました。xpdfのバージョンを判定し、pdftotextに与えるオプションを自動的に変更してくれます。また、xpdfに同梱されているpdfinfoというコマンドを新たに使用するようになっていますので、pdfinfo.exeをパスが通ったディレクトリに置いておく必要があります。 ただ、Namazu2.0.12に同梱されているpdf.plは、98、MeのWindows9x系でうまく動作しませんでした(pdf.plにMS-DOSのコマンドラインで使用できない標準エラー出力をリダイレクトする記述があるのが原因のようです)。XPは問題ありませんでしたので、おそらくNT系は大丈夫だと思います(NT、2000は今、手元に実験環境がないので、確認していません)。9x系の暫定的な対応策は下の方に書いておきます。 PDFファイルの検索を実現するのにはまず、xpdf本体と日本語用Language Support Packageの2ファイルを入手します。(xpdfのバージョンが1.00から1.01に上がりました。さらに2.00、2.01、2.02、2.03、3.00とリリースされています) 入手先 xpdf本体3.00 ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.00-win32.zip Language Support Package ftp://ftp.foolabs.com/pub/xpdf/xpdf-japanese.tar.gz xpdfのインストール先はパスが通っているディレクトリであれば、どこでも構いません。ここではCドライブにxpdfというディレクトリ(C:\xpdf)を作成します。ZIP形式で圧縮されているxpdf本体を展開(解凍)し、展開されたファイルをすべてC:\xpdfディレクトリにコピーします。 C:\xpdfディレクトリにあるsample-xpdfrcをxpdfrcにリネームします。 9x系はC:\Autoexec.batファイルをテキストエディタで編集し、行末にSET PATH=C:\xpdf;"%PATH%"と記述した上で上書き保存します。PATH=という行があれば、そこにC:xpdfを加えても構いません(区切り記号はセミコロンです)。Autoexec.batの設定はPCを再起動した後に有効になります。これでC:\xpdfへのパスが通り、フルパスを記述しなくてもpdftotextが実行できるようになります。NT系は環境変数のシステム変数のPATHの値にC:\xpdfを追加してください。 続いて日本語のLanguage Support Packageを解凍しますが、ここでUNIX系OSを使ったことがない人には見慣れないtar.gzという「拡張子」が付いた圧縮ファイルが登場します。これはUNIX系OSで一般的に使われているtarコマンドで複数ファイルをアーカイブ(ひとまとめにすること)し、gzipコマンドで圧縮したファイルです。解凍するにはtar.gzに対応した解凍ツールが必要ですが、Windows用でもかなりの数の解凍、圧縮ツールが対応しているようです。個人的にはWindows上でtar.gzファイルを解凍する場合はArchwayというアプリケーションを使っています。 統合アーカイバ(http://www.csdinc.co.jp/archiver/)からTAR32.DLLをダウンロードしてWindowsのsystemフォルダに入れる必要がありますが、これだけで気軽にtar.gzを解凍できます。Vectorあたりで使いやすそうな解凍ツールを探してみてください。 また、「Namazuの検索結果のカスタマイズ」で紹介しているcygwin(Windows上でUNIXライクな環境を実現するアプリケーション)をWindowsにインストールすれば、UNIX系OSと同様にtar zxvf xpdf-japanese.tar.gzとすることでtar.gzが展開できます。 xpdf-japanese.tar.gzを展開すると、xpdf-japaneseというディレクトリができるので、ディレクトリ名をjapaneseにリネームして、ディレクトリごとC:\xpdfディレクトリにコピーします。 C:\xpdf\japaneseディレクトリのadd-to-xpdfrcをテキストエディタで開きます。標準の設定は次のようになっています。
これを次のように書き換えます。それぞれのファイルの場所を示すパスをUNIX式の表記からWindows形式の表記に変更するだけです。各ファイルはC:\xpdf\japaneseにコピーしたので、
のように変更します。変更内容を確認したらadd-to-xpdfの内容をすべてコピーし、C:\xpdfディレクトリのxpdfrcをテキストエディタで開いて行末にペーストします。xpdfrcは次のようになります。
Namazu2.0.12をインストールした場合、以下の--ここから--、--ここまで--の間に記述してあるpdf.plの編集は必要ありません。Namazu2.0.10以前の場合は必要です。 --ここから-- 次いでC:\namazu\share\namazu\filterにあるpdf.plを編集します。pdftotextのオプションの使い方が少し変更されたためです。filterディレクトリにあるplという拡張子のファイルはすべてperl(パール)というプログラミング言語で書かれていますが、中身はテキストファイルです。テキストエディタで簡単に編集できます。73行目あたりにある
を次のように変更します。
--ここまで-- Namazu2.0.12を9x系にインストールした場合のpdf.plの不具合と暫定的な対応策 --ここから-- Namazu2.0.12をWindows98など9x系にインストールした場合、新しいpdf.plがうまく動作しませんでした。mknmzを実行すると、各フィルタをロードする時点(?)で コマンドまたはファイル名が違います. とDOS窓にメッセージが出ます。その後、インデックス作成自体は進みますが、pdfファイルはすべてUnable to convert pdf file (maybe copying protection)になります。xpdfが1.00以前と認識され、-enc EUC-JPでなく、-eucjpオプションで処理されてしまっているようです。暫定的な対処方法を次に示します。 pdf.plの44-47行目の
を
と書き換えます。 44-47行目はpdftotextをオプションなしで実行して標準エラー出力を変数に入れ、エラー出力の先頭部分にあるバージョンを示す値を、正規表現を使って取り出しているのですが、2>&1という記述はMS-DOSのコマンドラインではできないため、バージョンを示す値が取得できず、$pdfconvverの値が0になってしまいます。このため、上で示した暫定的な対応ではバージョンを示す値を取り出す処理の部分(44-47行目)をコメントアウト(行頭に#を付ける)し、次の行(48行目)に$pdfconvver = 1.01;(1以上の値なら何でもOKです。xpdf3.00は3.00)を記述し、強制的にバージョンを示す値を与えています。 もし、xpdf1.00以前の0.93などを使っている場合は48行目の値を0.93などと1未満の数値にしてください。 なお、Namazu2.0.10のpdf.plをxpdf1.00以降用に書き換え、これをNamazu2.0.12のC:\namazu\share\namazu\filterにコピーしても動作します。 ついでに、もう1点書いておきます。新しいpdf.plはpdfinfoというコマンドを使ってpdfのタイトルや作成者などの属性情報を取り出すようになりましたが、タイトルや作成者に日本語が含まれている場合、日本語部分が「無視」されてしまうようです。どうも、pdf.plの中で、この処理をしている120行目当たりの
に原因がありそうです。pdfinfoのhelpを見ると、 Usage: pdfinfo [options] <PDF-file> -meta : print the document metadata (XML) -enc <string> : output text encoding name -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -cfg <string> : configuration file to use in place of .xpdfrc -v : print copyright and version info -h : print usage information -help : print usage information --help : print usage information -? : print usage information と-enc(エンコード)オプションが使えるようなので、試しに-enc EUC-JPをオプションとして加えて、インデックスを作成してみたところ、無事、日本語のタイトルや作成者が表示されるようになりました。
なお、十分に動作確認しているわけではないので、あくまでも自己責任でトライしてみてください。 --ここまで-- 設定が完了したらMS-DOSプロンプトでmknmz -Cを実行してみます。対応メディアタイプにapplication/pdfが加わっているのを確認します。これでPDFファイルが検索対象に加わったはずです。適当なファイルで実際にインデックスが生成できるか確かめてみましょう。 pdftotextをC:\namazu\binにコピーして使う場合は編集したxpdfrcとjapaneseディレクトリもC:\namazu\binに置くのが分かりやすいでしょう。Namazu2.0.12ではこれに加え、xpdfに同梱されているpdfinfo.exeも一緒にコピーする必要があります。その上でxpdfrcの追加部分のパスをC:\namazu\bin\japanese\Adobe-Japan1.cidToUnicodeなどと書き換えてください。 Xpdfを3.00にバージョンアップしたところ、手元の環境ではmknmzの際にpdftotextが Error: Unknown config file command 'displayCIDFontX' (C:\xpdf\xpdfrc:118) Error: -- Xpdf no longer supports X fonts というエラーを出すようになりました。インデックスは作成されているので、問題はないのですが、気分的に良くありません。 #displayCIDFontX Adobe-Japan1 "-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-jisx0208.1983-0" ISO-2022-JP とxpdfrcの最後の行を#でコメントアウトしてしまいましょう。詳細に原因を追求していないので、何とも言えないのですが、少なくともX Window Systemを利用していないWindowsでは関係ない設定だと思います。(2004/01/29追記) | ||||||||||||||||
|
|
| TOPに戻る | miyazawat@hotmail.com |