PostScriptを使う


1.複数ページを1ページにおさめる

中味が大量にある文章を印刷するとき、 紙がもったいなく感じるので、省資源をする。

テキストファイル

% a2ps text file | lpr
もしくは、
% a2ps text file > outfile.ps

PostScript

% psnup -2 ps file | lpr
もしくは、
% psnup -2 ps file > outfile.ps
(-2 ではなくて、-4にすると、一枚に4ページがおさめるます。)

2.psファイルの連結

方法その1

gs -q -sDEVICE=pswrite -dNOPAUSE -dBATCH -sOutputFile=ファイル名 PSfile1 PSfile2 ...

方法その2

psmultiを使う。 psmulti-dna 1.0 を使用すれば、perl5でも普通に使うことができる。

psmulti input1.ps input2.ps ... -o output.ps

-nodecor枠をつけない
-pages (1,2,4..)1枚に何ページ入れるか。
-o出力ファイル名
-p縦長にする(portrait)
-l横長にする(landscape)
-select出力するページを指定する。
-reverse逆順にする。

ただし、そのままではperl5で使えないので、少し手を加えなければならない。 パッチを当てるか、以下の変更をする。


/usr/bin/perl が perl5 になってしまって psmulti が動かなくなったけど、 /usr/local/lib/psmulti/pspp-util.pl の 91 行と 104 行の @ の前に \ を入れれば一応動いているようだ。

パッチを当てる場合、 うにっくす ちっぷす 出紹介されているパッチを当てましょう。

ただ、研究室の環境では正常に印刷されなかった。


3.両面印刷

両面印刷をしたい。

ということでツールをつくりましょう。 それぞれ、Postscriptのコマンドを、psファイルの先頭に書き込みます。

縦長の紙の場合は、

%!
<< /Duplex true /Tumble false >> setpagedevice
横長の紙の場合は、
%!
<< /Duplex true /Tumble true >> setpagedevice

これにしたがってperlで書いてみると、 横長の場合のスクリプト縦長の場合のスクリプトとなる。 もっとうまくかけるでしょう。私に教えてください。

オプションで縦長、横長を切り替えられるようにしても良いかもしれない。 そこいらはご自分でお願いします。

参考にしたページ

4.psファイルから画像を切り出す

できるだろう。 今まで確認したところでは、

%%BeginDocument: figures/geom-v2.ps
.
.
.
%%EndDocument

などのように囲まれている部分を取り出すことができれば 画像として再利用することができる。 ただ、そのままでは大きさなどの情報が足りていないので、 ps2epsiなどを利用して整形してやる必要がある。

詳しくは、pscut.plを参照のこと。


補足

psnupはpsutilsという、PostScriptファイルを扱うツール群の一つで、 psutilsに覚え書きを書いた。


参照ページ