Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
filter/postscript.pl
- From: baba@xxxxxxxxxxxxxxxxxxxxxx
- Date: Wed, 27 Dec 2000 15:46:05 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 01186
馬場@京大宇宙物理 です。
意外なことに、PostScript ファイルってこれまで扱えなかったのですね。
# そのへんをインデックスさせてみて初めて気が付いたとゆう... _o_
テキスト抽出は ps2text と ps2ascii を使ったもので十分だろうとおも
います。ps2text, ps2ascii ともに Ghostscript が必要です。ps2ascii
は Ghostscript に付いてますが英語しか扱えませんですね。ps2text は
日本語Postscriptからでもテキスト抽出できますので便利です。
一次配布先が見当たらないのですが、とりあえず
http://www.softpark.jplaza.com/cgi-bin/DL.cgi/0+/SunOS/ps2text+/ps2text-0.4.tar.Z
から入手できます。0.3 はいろんなところに転がっているのですが、
0.4 は(捜した範囲では)ここからしか持ってこれませんでした。
あと、http://www.nmt.ne.jp/~ysas/fliner/ps2text_0_4_pat.gz に改良
パッチがあります。説明は http://www.nmt.ne.jp/~ysas/fliner/ です。
んで、ps2text を入れておいて、他のfilterプログラムを見ながら適当に
フィルタをでっちあげてみたのですが、ちょっとヘンなことになっている
ので、お知恵を拝借させてください。
以下の postscript.pl を /usr/share/namazu/filter/ などにコピって、
mknmz を走らせると、hoge.ps ファイルを認識してくれません。一方で、
huga.ps.gz のように gzip 圧縮してある ps ファイルだと、
1/14 - /home/baba/Namazu/ps/F77VOS.ps.gz [text/plain]
のようになってインデックスします。text/plain と表示するのがちょっ
と気に入りませんが、とりあえずこのインデックスで検索はできます。
ということで、Postscript ファイルからの日本語テキスト抽出はokだけど
ファイル検出に問題があるので、直していただけないでしょうか。
--
馬場 肇 ( Hajime BABA ) E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士後期課程
--
#
# -*- Perl -*-
# $Id: postscript.pl,v 1.16 2000/03/23 10:41:04 knok Exp $
# Copyright (C) 2000 Namazu Project All rights reserved ,
# This is free software with ABSOLUTELY NO WARRANTY.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either versions 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA
#
# This file must be encoded in EUC-JP encoding
#
package postscript;
use strict;
require 'util.pl';
my $postscriptpath = undef;
sub mediatype() {
return ('application/postscript');
}
sub status() {
if (util::islang("ja")) {
$postscriptpath = util::checkcmd('ps2text');
} else {
$postscriptpath = util::checkcmd('ps2ascii');
}
return 'no' unless (defined $postscriptpath);
return 'yes';
}
sub recursive() {
return 1;
}
sub pre_codeconv() {
return 0;
}
sub post_codeconv () {
return 0;
}
sub add_magic ($) {
return;
}
sub filter ($$$$$) {
my ($orig_cfile, $cont, $weighted_str, $headings, $fields)
= @_;
my $tmpfile = util::tmpnam('NMZ.postscript');
util::vprint("Processing postscript file ... (using '$postscriptpath')\n");
my $fh = util::efopen("| $postscriptpath > $tmpfile");
print $fh $$cont;
undef $fh;
$fh = util::efopen("$tmpfile");
my $size = util::filesize($fh);
if ($size > $conf::FILE_SIZE_MAX) {
return 'too_large_postscript_file';
}
$$cont = util::readfile($fh);
undef $fh;
unlink($tmpfile);
return undef;
}
1;