始めの言葉

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

2015年7月15日水曜日

プリンター・セッション経由の印刷 第2回 - PDFファイルの編集 -

前回お話したPDTファイルは、プリンター・セッションのプログラムが使用するものなので、中身は読めませんが、元になるPDFファイルは、ユーザーが自分の使用目的に合わせて編集できるようになっています。インパクト・プリンターを使用している場合には、通常はそのままの状態で使用しますが、独自に編集する必要があるのは、次のような場合が考えられます。
  1. 1ページの行数が66行よりも多いデータを印刷する。
  2. 前トラクターと後ろトラクターにそれぞれ2種類の連続用紙をセットして、それを操作パネルのスイッチを使って手動で切り替える代わりに、OUTQを選択することで自動的に切り替える。
これらに対応するための方法は、基本的にレーザー・プリンター向けの編集方法と考え方は同じですから、この後はレーザー・プリンターを使用する際の編集方法に話を進めます。
レーザー・プリンターは、ページ・プリンターという呼び方もあるように、ページ単位で印刷処理します。つまり、プリンター内で1ページ分の印刷データが準備できてから印刷動作を開始します。その結果、インパクト・プリンターではできない
  • 縮小印刷
  • 用紙方向の縦長・横長指定
という機能がありますし、更にカット紙用のレーザー・プリンターでは
  • 用紙トレイ選択・排紙トレイ選択
  • 両面印刷(長辺綴じ・短辺綴じ指定)
  • 上下左右の余白設定
といった機能を持っていて、これらを組み合わせた設定をPDTファイルに組み込むことで、自動的に希望の印刷結果が得られるようになります。
では、早速、PAGESモードのプリンター用のPDFファイルを使ってご説明します。PAGESモード用のPDFファイルは、PCOMMやCA標準の ibm5585.pdf を元に作られたものが、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/utility/pdt_pdf.html
このファイルを PC にダウンロードして、メモ帳等のエディターで開きます。(ダブル・クリックするとAdobe Reader が起動してエラーが表示されますので、ご注意ください。)
上から順番に見ていくと、すぐに"BEGIN_MACROS"があります。
(/*と*/で挟まれた部分は、コメント・アウト、つまり説明用のテキストで、機能には関係しません。)
初めの"NUL EQU 00"は、このPDFファイルの中では、"NUL"という3文字は、16進コードのコマンド"00"を表わしているという定義になります。つまり、任意の英数3文字 EQU(Equal イコール)16進コードのコマンドという書き方で、コマンドを英数3文字に置き換えているわけです。更に先を見ると、PAGES独自のコマンドの例として、用紙方向横長指定として、SRO EQU 1B 7E 50 00 01 03 と書かれた行があります。これは、SRO は、16進コードのコマンド 1B 7E 50 00 01 03 を置き換えるという意味になります。
AS/400から送られる印刷データの先頭に、これらのコマンドを追加するための指定は、"BEGIN_MACROS"の先にある
/*                     Control Codes                                  */
の直下の START_JOB= の行で行います。デフォルトで記述されている
START_JOB=CDS INZ SEL P10 LL6
は、
CDS(Change Data Stream)プリンターをPAGESモードにセットする -> INZ(Initialize)初期化する -> SEL(Select)印刷可能状態にする -> P10 文字ピッチを10cpiにする ->LL6 行ピッチを6lpiにする
という順番でプリンターにコマンドを送ることを意味しています。そこで、この行を、その下にコメント・アウトされているサンプル
START_JOB=CDS INZ SEL SA4 FA4 SRO P10 LL6
に置き換えると、プリンターをPAGESモードに設定し(CDS)、A4用紙のトレイから給紙して(SA4)、連続帳票からA4への縮小(FA4)して、印刷する設定になります。
なお、細かい話ですが、PAGESの場合、トレイ指定コマンド(ここではSA4)と、縮小コマンド(ここではFA4)は、この順番で記述しないと指定が有効になりませんので、ご注意ください。
また、余白の設定を併せて行うとすると、少し難しくなります。MACROの中に「余白ヘッダー部」として"MRG"があります。これを使うのですが、これはヘッダー部だけ、つまり何ミリにするかという値が含まれていませんので、START_JOB=の後ろに組み込む時に MRG の後ろに値を追加する必要があります。
余白の値は、値(ミリ)をインチに換算した値 x 1440を16進数にした値を、1バイトずつスペースで区切って記述します。例えば、用紙方向横長で、上余白10mm、左余白15mmに設定するには
  1. 上余白の値の計算 10mm÷25.4mm/インチx1440 = 567 -> 16進に換算= 0237 
  2. 左余白の値の計算 15mm÷25.4mm/インチx1440 = 850 -> 16進に換算= 0352
  3. 用紙方向横長のMACROは SRO
  4. MRGの後ろに左余白、上余白の順で1バイトずつブランクを挟んで記述します。
START_JOB=CDS INZ SEL P10 LL6 FB4 SB4 SRO MRG 00 00 03 52 00 00 02 37 00 00
 

このコマンドで設定した余白の値は、プリンターの操作パネルから初期設定で指定した
余白の値の影響は受けません。

余白の値の定義

0 件のコメント:

コメントを投稿