Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Postscript filter
- From: Gorochan ^o^ Kunito <goro@xxxxxxxx>
- Date: Thu, 14 Feb 2002 14:48:47 +0900 (JST)
- X-ml-name: namazu-devel-ja
- X-mail-count: 02352
こんにちは、御無沙汰しております。國頭です。
FreeBSD 4.5 で mknmz of Namazu 2.0.10 をportsで入れています。
postscriptのfilterについて気づいた点を報告致します。
○ filter/postscript.plの中で ps2ascii を呼んでいますが、-q optionをと
らないためにきちんと働いてくれないように思われますので、確認頂けません
でしょうか。
○ ghostscript 5.50 付属の ps2ascii 使用しているのですが、一部のファイ
ルの変換中に ps2ascii が固まって、そこで止まってしまうことがあることが
わかりました。どうも止まる時のps fileは dvips で作られたps fileである
場合がほとんどのようでした。そこで調べたところ dvips2ascii というもの
があることがわかりました。
ftp://ftp.FreeBSD.org/pub/FreeBSD/branches/-current/ports/print/dvips2ascii
http://www.FreeBSD.org/cgi/url.cgi?ports/print/dvips2ascii/pkg-descr
によると
This is a PostScript-to-ascii converter which works for PostScript
files created by dvips. Results are usually better than using ps2ascii
which comes with ghostscript.
とのことです。perlなので遅いですが、ps2asciiで固まっていたものも
dvips2ascii だと変換することができました。
現在は以下のようにして、dvips によるものだけを dvips2ascii 他のものは
ps2asciiを使っているのですが、もっときれいな方法はありませんでしょうか。
● dvips2ascii から、 dvips2asciionlyなるものを作った。
変更点は、Creator: dvips でなければエラーで終了させることと、出力ファ
イル名が - なら出力ファイルのチェックをしないこと。
--- /usr/local/bin/dvips2ascii Thu Feb 7 21:40:21 2002
+++ /usr/local/bin/dvips2asciionly Thu Feb 14 14:16:46 2002
@@ -37,7 +37,7 @@
}
}
- if (-e $out) {
+ if (("$out" ne "-") && (-e $out)) {
print "<$out> already exists. Should I overwrite this file? (y/N) ";
$yn = <STDIN>;
if ($yn !~ /^y/) {
@@ -66,6 +66,7 @@
if (!/dvips/) {
print STDERR
"Warning: This file is not created by dvips. Expect horrible results.\n";
+ exit 1;
}
} elsif (/^%%Feature:.*Resolution\s+(\d+)dpi/) {
$resolution = $1;
● dvips2ascii でエラーが起きれば ps2asciiを起動するwrapper
olive# cat /usr/local/bin/dvips2ascii_ps2ascii.sh
#!/bin/sh
#
# convert postscript to ascii text
# with dvips2ascii and ps2ascii
# by G.Kunito Feb.12,2002
#
dvips2ascii=/usr/local/bin/dvips2asciionly
dvips2asciiopts1=
dvips2asciiopts2='-'
ps2ascii=/usr/local/bin/ps2ascii
ps2asciiopts1=
ps2asciiopts2=
if [ x"$1" = x ]; then
echo "no postscript file name"
exit 1
fi
filename=$1
shift;
${dvips2ascii} ${dvips2asciiopts1} ${filename} ${dvips2asciiopts2} || \
${ps2ascii} ${ps2asciiopts1} ${filename} ${ps2asciiopts2}
● filter/postscriptからwrapperを起動するように変更
--- /usr/local/share/namazu/filter/postscript.pl.dist Fri Feb 8 12:32:30 2002
+++ /usr/local/share/namazu/filter/postscript.pl Wed Feb 13 22:14:19 2002
@@ -36,7 +36,8 @@
if (util::islang("ja")) {
$postscriptpath = util::checkcmd('ps2text');
} else {
- $postscriptpath = util::checkcmd('ps2ascii');
+ #$postscriptpath = util::checkcmd('ps2ascii');
+ $postscriptpath = util::checkcmd('dvips2ascii_ps2ascii.sh');
}
return 'no' unless (defined $postscriptpath);
return 'yes';
@@ -86,7 +87,7 @@
system("$postscriptpath -q $tmpfile > $tmpfile2");
}
} else {
- system("$postscriptpath -q $tmpfile > $tmpfile2");
+ system("$postscriptpath $tmpfile > $tmpfile2");
}
unless ($? == 0) {
unlink($tmpfile);
====================================================================
|| 國頭 吾郎 (Goro Kunito) [Research Associate] Tel 03-5841-6710 ||
|| 東京大学 新領域創成科学研究科 基盤情報学専攻 青山・森川研究室 ||
|| E-mail : kunito@xxxxxxxxxxxxxxxxxxxx , goro@xxxxxxxx ||
====================================================================