始めの言葉

「プリンターから印刷できて当たり前」と、ユーザーからもSIerからも軽視されがちなプリンターの世界ですが、実際にはお困りだったり、思ったような印刷結果が得られないまま我慢してお使いの皆様のために、今までの経験が役立てばと、このブログを立ち上げました。印刷の基本から、応用情報、問題の解決方法を情報発信すると共に、PDF化など、これからどうするかについても、ご相談に乗れれば幸いです。ご質問はコメントでお寄せください。

2017年7月16日日曜日

IBM 小型レーザー・プリンターの今まで -第18回- "PAGES"-12

前回、最後の PAGE 搭載モデルになるのではとお話しした "Infoprint SP8200 N50" は、オプションで後処理機構を持っています。それによって、印刷した用紙を溜めておける枚数が大きくなるだけでなく、ステープル止めするとか、パンチ穴を開けるといった、後処理ができるようになっています。
印刷速度も近いことから、"Inforpint40" の後継機とも考えられますが、PAGES モードのマイクロコードの開発部門が異なっていることもあり、558x シリーズの PAGES モードに近いレベルの機能となっています。
両者の PAGES モードの代表的な機能を比較すると、次のようになります。(もちろん、それぞれのハードウェアが持っている機能の違いも、大きく影響しています。)

1. ステープル止め     
   - SP8200 N50 : 左/右/上に対して、1箇所、2箇所綴じ、左/右においては斜め綴じ指定可能
   - Infoprint40 : 1箇所、2箇所綴じ指定可能
2. パンチ穴あけ
   - SP8200 N50 : 左/右/上に対して、3箇所指定可能
   - Infoprint40 : 対応していない
3. 排紙トレイの自動切換え
   - SP8200 N50 : 排紙トレイが一杯になったら印刷を止める。
                         空いている排紙トレイへは自動切換えしない。
   - Infoprint40 : 排紙トレイが一杯になったら、自動的に空いている排紙トレイに排紙を続ける。

Infoprint40 の PAGES モードでは、558x プリンター系の持っていた PAGES コマンドに対して、例えば、"N-Up 印刷"(複数ページを1ページに集約して印刷する、縮小印刷の方式)機能に対応するコマンド等を追加していました。
その結果、プリンター・セッション経由の印刷においては、PDF ファイルの中にそれらのコマンドを追加指定することによって、それまで実現できなかった印刷が可能になっていたのです。

"Infoprint SP8200 N50" では、同じ PAGES 拡張コマンドをサポートしていませんでしたが、同様の印刷を行なえるようにするために、"PJL コマンド" と PAGES コマンドを組み合わせて活用することで対応できます。

"PJL コマンド"は、元々、HP 社が規定したレーザー・プリンター用の制御コードですが、他の様々なプリンター制御コード(PCL, PAGES, LIPS等々)と大きく異なる点は、それらよりも基礎の階層のレベルのもので、多くのプリンター・メーカーが共通でサポートしているという点です。
機能面では、"印刷部数指定"、"両面印刷"、"N-Up印刷"、"縮小印刷"等の指定ができますが、例えば、両面印刷を指定するコマンドは共通でも、長辺綴じか短辺綴じかを指定するパラメーターは、プリンター・メーカー間で、微妙に異なっています。
そこで、自分の使用しているプリンターの、PJL コマンドを知る必要が出てきますが、その方法は、以前、連続用紙への印刷から、カット紙への印刷に移行する -第13回 PDFダイレクト印刷における印刷制御- の回でご紹介しています。

PAGES カード使用解説書抜粋 用紙セット方向とステープル位置の関係

PAGES カード使用解説書抜粋 用紙セット方向とパンチ穴位置の関係
この PJL コマンドを PDF ファイルの中で指定する方法は、"Infoprint SP8200 N50" 付属のPAGES カード使用解説書の中で記載されていますが、ここで一部をご紹介します。この考え方をご理解いただくと、プリンター・セッション経由の印刷でのプリンター制御の理解が深まると思います。

ポイントは次のとおりです。
1. "BEGIN MACROS" の中に、PJL コマンド開始を表わすコマンドを "PJS" として定義する。
PJS EQU 1B % - 1 2 3 4 5 X @ P J L 20 0D 0A @ P J L 20 J O B 20 0D 0A
(%、-、1、@ 等は、1バイトの文字として送信される必要があるので、1文字の前後にブランクが入ることにご注目ください。)

2. 同様に PJL コマンド終了を表わすコマンドを "PJE" として定義する。
PJE EQU 1B % - 1 2 3 4 5 X @ P J L 20 0D 0A @ P J L 20 E O J 20 0D 0A @ P J L 20 R E S E T 20 0D 0A 1B % - 1 2 3 4 5 X

3. PAGES モード指定したい PJL コマンドを定義する。ここでは、用紙の左上角をステープル止めするコマンドを "SLV" という名前で定義する。 
SLV EQU @ P J L 20 S E T 20 S T A P L E 20 = 20 L E F T T O P 0D 0A



4. プリンターが、データの先頭で PJL コマンドを処理した後、PAGES モードに切り替えるために、PAGES モードへの切り換えコマンド("CDS" と名付けていますが)を送信するのですが、このコマンド自体が、PAGES コマンドであるという、鶏と卵のような関係があるため、PAGES モードへ切り換えるための、PJL コマンドを "PGS" として次のように定義します。
PGS EQU @ P J L 20 E N T E R 20 L A N G U A G E 20 = 20 P A G E S 20 0D 0A

5. 以上で定義されたコマンドを、次の順番で "START_JOB=" と "END_JOB" の後ろに並べます。この順番が重要です。これによって、先ずプリンターに PJL コマンドが送信され、次に、PAGES モードに切り替えてから印刷データが送信されます。最後に、PJL コマンドの終了コマンドが送られることによって、PJL コマンドが、PAGES の印刷データを挟む形となることが重要です。

START_JOB=PJS SLV PGS CDS INZ FNS
........
END_JOB=INZ PJE


なお、ここでは、"START_JOB=" の中の "FNS" があります。これは、排紙トレイを後処理オプションの排紙トレイに指定するための PAGES コマンドの定義です。ステープル止めを指定する以上、後処理オプションの排紙トレイに排紙するのは当然のことですが、コマンドで指定しておく必要があるということです。
FNS EQU 1B 7E 47 00 06 00 00 03 00 00 00

0 件のコメント:

コメントを投稿