始めの言葉

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

2016年6月19日日曜日

連続用紙への印刷から、カット紙への印刷に移行する -第14回 PDFダイレクト印刷における印刷制御-

Mapping では、生成した PDF ファイルをスプールとして、OUTQを通して、PDF ダイレクト印刷機能を持ったプリンターや複合機に印刷させるコマンドがあります。
MAPIFS2PRTコマンド追加のパラメーター
それが、"MAPIFS2PRT"コマンドで、前々回に、その画面とパラメーターをご紹介しています。その画面で、"F10= 追加のパラメーター"を実行し、次の画面に移動すると、ここにあるように
Insert this file before
Insert this file after
というパラメーターが指定できるようになることが、分かります。

Insert this file before
には、前回作成した、第2給紙トレイを指定するための PJL コマンドを記述したファイル、"settray2.pjl"とそのファイルの保管場所を、次のように記述します。
/mapping/pjl/settray2.pjl

Insert this file after
には、PJL コマンドを使った制御の終了を表わすための共通のファイル、"PJL_after.pjl"とその保管場所を次のように記述します。
/mapping/pjl/PJL_after.pjl

以上の指定によって、"MAPIFS2PRT"コマンドの1画面目で指定した PDF ファイルに対して、前後にこれらの PJL コマンドを付加し、1画面目で指定した OUTQ を通して、その先のプリンターに直接印刷させることができます。
これは、印刷に使用するプリンターや複合機で対応している PJL コマンドが、前回のお話のような方法などを使って分かれば、メーカーを問わず、AS/400 上の Mapping で生成した PDF ファイルを、直接印刷できるということも意味しています。
(もちろん、両面印刷等の制御が不要で、単に PDF ファイルを印刷することさえできれば良いということであれば、PJL コマンドを調べる必要はありません。)

また、元々、PJL コマンドの基本的な仕様は、メーカー間で共通ですから、"MAPIFS2PRT"コマンド
MAPIFS2PRTコマンドのUse PJLパラメーター
の1画面目のパラメーター"Use PJL"の値を"*YES"に変更しておけば、他のパラメーターの PJL コマンド
  • "Input bin(TRAY)" <- 給紙トレイ
  • "Output bin(OUTBIN)" <- 排紙トレイ
  • "Quantity(QTY)" <- 印刷部数
  • "Duplex(DUPLEX)" <- 両面印刷
が付加されます。
ただ、これらのパラメーターの指定の結果として付加される PJL コマンドに対する動きが、メーカーによって異なる可能性は、十分あり得ますので、実際にプリンターや複合機に印刷させながらテストする必要はあります。
例えば、"両面印刷"にしても、この画面のパラメーターだけでは、"短辺綴じ"か"長辺綴じ"かの指定ができません。もし、印刷結果が、期待通りの綴じ方にならなかった場合には、やはり、PJL コマンドのファイルを用意することになります。

以上は、PDF ダイレクト印刷機能を持ったプリンターに対して、LAN 直結で AS/400 から直接印刷
MVPを経由した PDF の印刷処理
するための方法でした。使用するプリンターや複合機に、PDF ダイレクト印刷の機能が無い場合には、生成した PDF ファイルを、同じ"MAPIFS2PRT"コマンドを使って送信するのですが、その時に使用する OUTQ の送信先(IPアドレス)は、PCになります。
その PC 上に、Mapping のオプション・ライセンスである"Mapping Virtual Printer(略して MVP と呼んでいます)"というツールを導入設定しておくと、MVP は、PDF ファイルが送信されてきたことを自動的に検知し、Adobe Reader と使用するプリンターのドライバーを使って、印刷します。
この場合は、給紙トレイの指定や、両面印刷の指定は、PC 上のドライバーのプロパティの設定が有効になりますので、PDF ダイレクト印刷の時に"MAPIFS2PRT"コマンドで指定した PJL コマンドは無効です。
この印刷方式では、PC、もしくは、PC サーバーを介した印刷になりますが、Windows プリンター・ドライバーさえあれば、ラベル・プリンターも含む、様々なメーカーの、様々なタイプのプリンターに自動印刷できるようになることが、大きなメリットです。



2016年6月11日土曜日

連続用紙への印刷から、カット紙への印刷に移行する -第13回 PDFダイレクト印刷における印刷制御-

事前印刷された連続用紙への印刷をカット紙への印刷に切り替えることの目的が何だったかを思い出してみると、その一つには、コスト削減がありました。生成された PDF ファイルを直接、プリンターや複合機に印刷させる際に、両面印刷で行なうことは、コスト削減の有効な手段になりますし、その際に、最後にプリンターの後処理機構でステープル止めを行なったり、1ページ目だけは色紙を使って片面印刷を行なえば、印刷後の仕分けを楽に、正確に行なえるようになり、業務の効率化にも繋がります。
PDF ファイルを"Adobe Reader"で開いて、プリンター・ドライバーを使って印刷するという、人手によるオペレーションでは、ドライバーのプロパティ画面で、そのような設定を行なうことができます。(もちろん、プリンターの持っている機能に依存しますが)
しかし、AS/400 上で Mapping が PDF ファイルを生成し、それを OUTQ を通して LAN 直結されたプリンターに直接印刷させる場合には、そのような設定を指定する場所も、タイミングもありません。
そこで、出てくるのが"PJLコマンド"です。PJLコマンドについては、今まで2回、簡単にお話したことがありますが、今回はもう少し実践的なお話をしたいと思います。
使用するプリンターが、どのようなPJLコマンドをサポートしているか、それがPDFダイレクト印刷の制御に使用できるかどうかは、正式には、プリンター・メーカーに問い合わせて仕様書等を入手する必要がありますが、ここでは、希望する制御に対応したPJLコマンドを簡単に調べて、実際に有効かどうかを調べるための手順をお話します。
考え方は簡単です。ご自分の使用するプリンターや複合機の、Windowsプリンター・ドライバーのプロパティ画面で設定できる様々な機能は、実は、そのまま、そのプリンターの持っているPJLコマンドが対応しています。そこで、プロパティを変更する前と後の印刷データを比較することにより、ドライバーから発行される、どのPJLコマンドがその機能に対応しているかを見つけ出すという考え方です。
ただし、そのPJLコマンドは、Windowsからのドライバー印刷が前提のものですから、全てがそのままPDFダイレクト印刷でも機能するとは、言い切れないという点を、予めご承知おきください。
手順は、次のとおりです。
1. プリンターのドライバーのプロパティ画面で、「ポート」を「FILE:」に変更して保存します。
ポートをFILE:に変更















2. メモ帳に簡単なデータ(例:ABC)を書き込んでから、印刷を行なうと、下記の画面のように「出力
ファイル名と保存場所の指定
先ファイル名」を指定する画面が表示されます。そこで、「c:\ファイル名(例:ABC1.dat)」を指定して、OKボタンを押します。(これによって、ドライバーがデフォルトの設定の時の印刷データが、ファイルに保存されます。)






3. PDFダイレクト印刷時に指定したい設定(例:給紙トレイをトレイ2に固定する)を、プリンター・ドライ
用紙トレイを2に固定
バーのプロパティ画面で指定してから、同じメモ帳のデータを印刷します。その際に指定するファイル名は、"2."のものと別にします。(例:ABC2.dat)










4. Cドライブの直下に保存された2つのファイル(例:ABC1.datとABC2.dat)をメモ帳で開いて比較し
2箇所のPJLコマンドの違い
ます。
(初めに@PJLで始まる設定のための行が、何行もあることに驚かれると思います。)
この例では、
  • 「@PJL SET AUTOTRAYCHANGE」が、「ON」から「OFF」に
  • 「@PJL SET TRAY」が、「ALL」から「TRAY2」に
変更されたことが分かります。




5. そこで、"ABC2.dat"ファイルに対して、次の編集を行ってから別名(例:settray2.pjl)保存します。
settra2.pjlの内容
(1) @PJL JOB NAME = "無題 - メモ帳"を@PJL JOB NAME = "Mapping Job"に変更します。(この名前は任意です。)

(2) 最終行の@PJL ENTER LANGUAGE = RPCSを@PJL ENTER LANGUAGE = PDFに変更します。これは、プリンターをPDFダイレクト印刷モードに切り替えるためのものです。(多くのプリンターでは、送信されてきた印刷データの種類を自動検知して、そのモードに切り替わるようにできていますが、誤検知する場合を考慮して、この変更は必須と考えてください。)


(3) (1)(2)の2行と、@PJL SET AUTOTRAYCHANGE = OFF、@PJL SET TRAY = TRAY2の2行を残して、@PJLで始まる行と、@PJL ENTER LANGUAGE = PDFより後ろのデータを削除します。

(4) @PJL ENTER LANGUAGE = PDFの直後に、改行を追加します。(これは必須です。ご注意ください。)

以上の編集の結果、"settray2.pjl"ファイルの内容は、上の画面のようになります。このファイルをIFS 上の決めた場所に保存します。(例 : /mapping/pjl/settray2.pjl)

6. 印刷する PDF ファイルの先頭に付けるPJLコマンドのファイルの他に、後に付けるファイルが必
PJL_after.pjlファイルの内容
要です。つまり、PDF ファイルの前後をPJLコマンドのファイルで挟むのですが、後ろのファイルは終了を指定するためのものなので、印刷制御に関わらず共通です。
メモ帳(テキスト形式)で開くと、次のようなものです。
@PJL EOJ NAME = "Mapping Job"が共通の部分です。つまり、初めに@PJL JOB NAME = "Mapping Job"で指定した JOB の名前の JOB が EOJ(End Of Job)になるという意味です。
この画面の例は、リコー社製プリンター用のものなので、その後に、標準のRPCSモードに戻すための16進コードが書き込まれています。従って、それ以外の場合には、この部分は削除するか、各プリンター・メーカーの仕様に合わせてください。このファイルを、例えば、"PJL_after.pjl"と名づけて、IFS上の決めた場所に保存します。(例 : /mapping/pjl/PJL_after.pjl)

このようにして準備したPJLコマンドのファイルを、前回お話した"MAPIFS2PRT"コマンドのパラメーターとして指定することにより、PDF ファイルの前後をこれらのPJLコマンドで挟んでプリンターに送信するのですが、詳しくは次回にお話しします。

2016年6月5日日曜日

連続用紙への印刷から、カット紙への印刷に移行する -第12回 PDFファイルの生成とその印刷-

19. 前回までの操作によって、AS/400 上の IFS にある、Mapping が使用する区画にプロジェクト・ファイ
Mapping メイン・メニュー
ルを生成・保存したら、今度は、それを OS/400 上の Mapping のプログラムが使用できるようにするために、"オブジェクト"に変換します。変換には、先ず Mapping メイン・メニューの中の"2 Mapping オブジェクトの取り込み"を実行します。









20. 画面には、先ほど保存した2つのプロジェクト・ファイル"OKURIJO00010"と"OKURIJO00020"
Mapping オブジェクトの取り込み
が、表示されています。(表示される名前は、ファイル名ではなく、設計する時に決めた"フォーマット名""シーケンス"です。)
それぞれに対して、"1 = 取り込み"を実行すると、オブジェクトに変換されますので、準備は完了です。









21. PDF ファイルを生成するためのコマンドは、"MAPSPLPDF"です。コマンド・ラインから入力し
MAPSPLPDF コマンドのパラメーター
て、"F4"キーを押すと、次のような画面が表示されます。
初めの 4 つのパラメーターは、対象となるスプールを特定するためのものです。
次の"開始ページ"と"終了ページ"は、特定したスプールにおいて、PDF ファイルを生成するページの範囲を指定するものです。画面のように、デフォルトの"1"と"999999"とした場合は、全てのページを対象とすることを意味します。
次は、適用するプロジェクトのフォーマット名とシーケンスを指定する欄です。今回作った"OKURIJO"のように、2 種類のフォーマットをページ毎に適用する場合には、右に表示された選択肢の中の"*MRG"を指定します。
次は、生成される PDF ファイルのファイル名です。例えば、"OKURIJO.pdf" というように、拡張子まで入力します。ただし、実運用では、互いに上書きにならないような、そして後から分かりやすいファイル名を自動的に指定するように、設定することになります。
次は、保存先のパスです。IFS 上のフォルダーを指定しますが、存在しないフォルダー名を指定した時には、Mapping が、そのフォルダーを作成してから保存します。
22. 更に、"F10 追加のパラメーター"を押してから次の画面に切り替えて、コード・ページを指定しま
MAPSPLPDF コード・ページの指定
す。ここでは、日本語の場合、半角カタカナや、半角英小文字の文字化けを防ぐために、290、若しくは、1027 を指定します。適用するスプールの言語に応じたコード・ページを指定することが重要です。
そして実行キーを押すと、Mapping が PDF ファイルを生成します。








 以上の手順で、PDF ファイルが IFS 上に生成されるのですが、実運用の多くのケースでは、その後、PDF ファイルを印刷する、ファイル・サーバーに移動する、メール送信する、FAX 送信に使用するという処理が必要となります。
ここでは、次に、印刷するための流れをお話します。

レーザー・プリンターや複合機では、各メーカー独自のページ記述言語とそれに対応するWindows
Mapping からの直接印刷の流れ
プリンター・ドライバーが用意されています。しかし、仕様を注意して見ると、その他に、"PDF"とか"PDF ダイレクト"と書かれたモードを持っているものがあることに気が付きます。
PDF ファイルの印刷は通常、人が、Windows上の Adobe Reader でファイルを開き、印刷メニューでプリンター・ドライバーを選択して行ないます。それに対して、PDF ダイレクト印刷とは、その操作をプリンター自身が自動的に行なうものです。つまり、プリンターに対して、PDF ファイルを送信すると、プリンターがそれを検知して、内部で開いて印刷するという動きをします。
その機能を持ったプリンターや複合機なら、そのプリンターのIPアドレスを宛先アドレスとして作成した、OS/400 上の OUTQ に対して、PDF ファイルをスプールとして送信できれば、AS/400 から、PC を介さず、LAN直結で印刷させることができます。

MAPIFS2PRTコマンドのパラメーター
そのような印刷のために、Mapping で用意されているコマンドが、"MAPIFS2PRT"コマンドです。
"MAPIFS2PRT" コマンドのパラメーターの基本は、次のようになっています。
初めに、印刷する対象となる PDF ファイルの保管場所とファイル名を指定します。例えば、/home/mapping/OKURIJO.pdf となります。
次は、スプール・ファイル名です。これは、PDF ファイルをスプールとしてプリンターに送信する時の名前ですから、全く任意です。(PDF ファイル生成の時の元になったスプールとは、関係ありません。)
次は、送信先のプリンターの OUTQ 名と、そのライブラリー名です。
以上の 3 つのパラメーターを指定して、コマンドを実行するだけで、PDF ファイルを、AS/400 と LAN 直結したプリンターや複合機に印刷させることができます。
ただし、これだけでは不十分で、例えば、印刷部数や、両面印刷の指定など、Windows からの手動印刷なら、プリンター・ドライバーのプロパティ画面で指定するような印刷制御が必要な場合が出てきます。
その方法に関しては、次回以降でお話します。