始めの言葉

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

2017年6月4日日曜日

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

PC の OS の主流が、まだ、J-DOS や DOS/V だった頃には、ワープロや表計算、オンライン端末といったアプリケーションが、それ自身で印刷データを生成して、プリンターに送信してくるという仕組みでした。
一方、インパクト・プリンターと比べて、レーザー・プリンターは、縮小指定、用紙トレイ指定、用紙方向縦/横指定、4 辺の余白の指定等々、制御コマンドの種類が多いのですが、メーカー間で統一されたコマンドは、ありませんでした。
そうなると、各レーザー・プリンター・メーカーは、標準のプリンター制御コマンドを独自の規格で決めて、多くのアプリケーション・メーカーに対応していただくことで、競争力になると判断したわけです。そして、更に、他社が真似して同じコマンドに対応してきたとしても、その時には、自社が先行してコマンドを拡張しておくことで、自社の優位性が保たれるとも考えました。

その際に、インパクト・プリンターの実績のあった、IBM と EPSON 社は、インパクト・プリンターのコマンドを独自に拡張する方式で、それぞれ、PAGES、ESC/Page というレーザー・プリンター向けの規格を作りました。それ以外のレーザー・プリンター・メーカー、例えば、CANON 社は、LIPS という全くレーザー・プリンター独自の自社規格を決めて、多くのアプリケーション・メーカーのサポートを得ていました。
その中で、多くのプリンター・メーカーがターゲットにしたのが、IBM の AS/400 やメイン・フレームのシステム・ユーザーです。この市場は大きいと判断したのだと思います。
それらのシステムからの印刷を行なうためのアプリケーションは、3270PC であったり、5250PC ですが、それらは、5577 形式か、ESC/P 形式のコマンドしか送信しません。そこで、5577 のマニュアルに記載されているコマンドの説明や、それらアプリケーションからの印刷データを調べて、5577 互換 + 各社独自のレーザー・プリンター制御コマンドという組み合わせの、所謂「5577 エミュレーション・コマンド」(エミュレーションとは、真似という意味)を、レーザー・プリンターのオプションとして販売しました。
5577 コマンドに対する各社の拡張

しかし、その後、Windows の登場によって、印刷データの流れは大きく変化し、アプリケーションは印刷データの生成という作業から解放され、その分の仕事は、自社プリンター用のドライバーの開発として、プリンター・メーカーに移ったわけです。自社の規格を業界標準として競争力を維持するという戦略の下に、独自規格でコマンドを決めてきたことが、Windows の登場によって、自社の負担になってしまったという、皮肉な結果になっています。

そのような時代の変化の下で、AS/400 も含めたホスト・システムから、端末アプリケーションを介して、(PAGES も含めた)5577 互換のレーザー・プリンターへの印刷という図式も、いつの間にか崩れてきたようです。
つまり、一般の Windows アプリケーションと同様に、PCOMM プリンター・セッション経由の印刷も、最早、PDT 印刷ではなく、PDT を指定しないドライバー印刷で対応可能になってきているようです。
これは、PCOMM 側の改良や、プリンター・メーカーによるドライバーの改良の両方が寄与していると思います。

さて、そうなってくると、PAGES の必要性は、どこかに残っているのでしょうか ?
それは、次の 3 つのケースに絞られるかと思います。
1. OS/400 のHPT 機能を使った、AS/400 からの LAN 直結印刷の場合
2. AS/400 上のアプリケーションとして、PAGES コマンドをキャラクター・モードを使って送信する場合
3. AIX 等の UNIX 系のシステムからの文字印刷の場合

Windows のドライバー印刷では、印刷データは、アプリケーションとプリンター・ドライバーが、MS 明朝や、MS ゴシック等々の Windows に付属のフォントのイメージを使って、文字もイメージ・データと各ページのイメージをプリンターに送信してきます。
それに対して、"1" と "3" は、途中にWIndows を介しませんから、文字は文字コードとしてプリンターに送られ、プリンターが内蔵フォントを使って印刷イメージを生成します。
次の画面は、OS/400 V7R1 において、リモートOUTQの設定の画面ですが、コマンド変換するための選択肢である "MFRTYPMDL" にも、例えば "*IBMPAGES300" が準備されています。これは、前回までお話した、300DPI の解像度を持つ、ネットワーク・プリンター・シリーズの PAGES オプション用のものです。
MFRTYPMDL *IBMPAGES300

"2" は、文字通り、キャラクター = 文字としてプリンターを制御する PAGES コマンドをプリンターに届けないとなりませんから、プリンター・セッションでは、印刷データはイメージではなく、文字コードや制御コマンドとしてプリンターに送信する必要があります。
例えば、スプール・データの 1 ページ目は、A3 サイズの用紙に印刷するが、2 ページ目以降は、A4 サイズ用紙に印刷するといった業務の場合、データの先頭で、A3 サイズの用紙がセットされた用紙トレイを指定し、2 ページ目の先頭では、A4 サイズの用紙がセットされた用紙トレイを指定するコマンドを、印刷データの中に埋め込むことになり、このような場合に、キャラクター・モードが使用されます。
この業務を継続するために、PAGES モードを持ったプリンターを使い続けるという方法以外に、PAGES という一種の制約を外すことを検討するのであれば、Mapping Suite のようなソリューションの導入を検討されるのが良いと思います。

2016年7月2日土曜日

QRコードの印刷方法 - 第1回 プリンターの持っているコマンドを使う -

2015年10月から連載した"バーコードの印刷方法"では、文字通り"バーコード"、つまり、バーを組み合わせた 1 次元コードを対象としたものでした。1 次元コードは、ほとんどが APW で指定できるという大きなメリットがありましたが、2 次元コード、国内で使用されている"QRコード"は、APW では対応されていません。そのため、AS/400上のアプリケーションから、"QRコード"付きの帳票を印刷するには、工夫が必要です。
QRコード印刷サンプル
"QRコード"は、製造業だけに限らず、様々な業種において、様々なアプリケーションに使用されています。最も大きな特徴は、格納できる文字数の多さと、文字に漢字などの2バイト文字にも対応していることと言えます。では、QRコードをプリンターで印刷するには、どうしたら良いでしょうか?

先ず、1 次元バーコードの時と同様に、プリンターの持っているコマンドをプリンターに送信し、プリンター内部で QRコードを作製して印刷する方式が考えられます。それには、どのような点に注意して、どのようにすれば良いでしょうか?
QRコードの"コマンド"と言いましたが、実は、QRコードを印刷するための"SCSコマンド"はありません。それが、APW で対応していないことの大きな理由となっています。逆に言うと、インパクト・プリンターなら、"5577モード"、レーザー・プリンターなら"PAGESモード"の中に、QRコードのコマンドがあるということです。

コマンドそのもののは、1次元コードのコマンドと同様に、
- 1B 7E 40(バーコード印字形式設定)コマンド
  によって、QRコードであること、QRコードの大きさを指定し、次に
- 1B 7E 42(バーコード印字)コマンド
  によって、印刷位置と格納するデータを指定するという構成です。
なお、QRコードの中に格納するデータの文字コードは、英数文字ならUS-ASCII、漢字ならShift-JISになります。
これらのコマンドやデータを、AS/400 上のアプリケーションからプリンターに送信できる接続方法と対応プリンターの組み合わせを整理すると、次のようになります。

1. PCOMM プリンター・セッション経由のPDT印刷
キャラクター・モードを使って、バーコード・コマンドをアプリケーション内に組み込みます。
インパクト・プリンターなら、5577系、レーザー・プリンターなら、PAGES系のプリンターは、キャラクター・モードにも、QRコードのコマンドにも対応していますので、使用可能です。
サンプル・コードをこちら(5577系, PAGES系)で公開していますので、ご参照ください。
しかし、5400系のライン・プリンターは、キャラクター・モードに対応していません。

2. HPT(ホスト印刷変換機能)を使った LAN 直結印刷
プリンター・セッション経由のPDT印刷と同様です。キャラクター・モードを使って、QRコード用のバーコード・コマンドをアプリケーションから発行するようにします。

3. Telnet5250Eを使った LAN 直結印刷
5400系のライン・プリンターでも、5577モードでは、QRコードを印刷するコマンドを持っていますが、5577系と異なり、キャラクター・モードに対応していませんから、同じ方法は使用できません。
しかし、Telnet5250E 接続の機能の中で、透過モードをサポートしていますので、これを使ってコマンドを送信するようにアプリケーションを組めば、通常の接続方法の下で、QRコードを印刷することができます。

ただ、以上のご説明でお分かりのように、プリンターにコマンドを送信してQRコードを印刷させるには、アプリケーションのプログラミングに大きな手間が掛かります。
そこで、次回は、プログラミングの手間の掛からない方法をご紹介します。

2016年4月10日日曜日

連続用紙への印刷から、カット紙への印刷に移行する -第5回 縮小して両面印刷する-

連続用紙からカット紙に移行する時に、両面印刷に変えると印刷枚数が半分となり、用紙コストを更に削減できます。しかし、連続用紙は用紙が繋がっているのに対して、カット紙は印刷後の用紙の取り扱いに注意しないと、用紙の順番がバラバラになってしまう危険性があります。
そこで、複合機や50枚/分以上の印刷速度を持つプリンターでは、オプションとして用意されている後処理機構を追加すると、印刷直後に自動的にステープル止めを行ない、用紙がバラバラになるのを防ぐことができます。
(もちろん、このオプションを使わなくても手動でステープル止めは可能ですが、手動では、それまでの間に用紙をバラバラにしてしまうリスクは残ります。)
両面印刷した後、左上隅の1箇所や、左辺の2箇所にステープル止めするとした場合、奇数ページは左余白を、偶数ページでは右余白を大きめに設定しておく必要があります。
左右の余白が異なる両面印刷のイメージ
今までお話した PCOMM プリンター・セッション経由の印刷や、HPT 機能を使った印刷、5400エミュレーターII を使った Telnet5250E 接続の印刷では、印刷データ全体に対して余白の値を設定することはできますが、奇数ページと偶数ページで余白の値を変えることはできません。そのため、左余白の値も右余白の値も、同じ大きめな値に設定することになります。
第3回 キャラクター・モードを使った縮小印刷指定でお話した、"キャラクター・モード"を使って奇数ページと偶数ページで異なる値の余白を設定するコマンドを、ページ毎に発行すれば実現できますが、そのためのプログラムは大変です。
しかし、前回ご紹介した"MappingSuite"を使えば、簡単に実現できます。
1. "MapDraw"で新規作成を指定する表示されるフォーマットの定義の画面で、"片面/両面"に"両面(短辺)"を、"片面""両面"に"Portrait"を、"フォーマット名"に"SHUKUSHOH2"を指定します。
MapDraw両面印刷用プロジェクトの定義
(他の値は前回と同じです。)
A4 横長で、短辺側を綴じる場合の設定です。長辺で綴じる場合には、"両面(長辺)"を指定します。










2. 両面の指定を行ったことにより、前面設計用の"DrawF""MapF"("F"は"Front"の意味)の他に、裏面設計用の"DrawB""MapB"("B"は"Back"の意味)の画面が選択できるようになります。また、どちらかの画面で、横132桁、縦66行のスプール・データを取り込むと、もう片方の画面でも、同じスプール・データが表示されます。
MapDraw両面毎に設計可能な画面














3. 次は前回と同様にして、縦66行のグループ、そしてその中に横132桁を指定したゾーンを作成します。ここでのポイントは、前面設計の画面(MapF)では、ゾーンの中の文字の配置は"左揃え"とすること、ゾーンの左端の位置を、奇数ページの左余白の値と合わせることです。
MapDraw前面の設計














4. そして、裏面設計の画面(MapB)では、同じ縦66行のグループの中に、横132桁ですが、文字の配置は"右揃え"とし、右余白の値を前面の左余白の値と同じ値に合わせたゾーンを作成します。
MapDraw裏面の設計














5. この設計をそれぞれ奇数ページと偶数ページに適用するために、条件付けを行ないます。"プロジェクト"タブの"プロジェクトのプロパティ"ボタンを押して表示される画面の"表面"タブの画面では、"Page""Page 1 of 2"と設定します。
MapDraw奇数ページ用の条件付け













6. "裏面"タブの画面では、"Page""Page 2 of 2"と設定します。
MapDraw偶数ページ用の条件付け

7. ここまでの設計の確認には、"マルチ・プレビュー"ボタンを押して、スプール・データのページをめくっていくと、奇数ページと偶数ページでそれぞれ左右余白が一致するかを確認します。
MapDrawマルチ・プレビュー

設計は以上になります。この後、プロジェクトの生成->プロジェクトの関連付け->MapDrawフォーマットの取り込みの手順は、今までお話したとおりです。
このような帳票設計ツールを使うことによって、コマンドの指定では困難な帳票の印刷が簡単に実現できることをご理解いただけたかと思います。

2016年3月27日日曜日

連続用紙への印刷から、カット紙への印刷に移行する -第3回 キャラクター・モードを使った縮小印刷指定-

3. 印刷データの先頭に、縮小率や用紙方向、余白の値等を指定するコマンドを付加してプリンターに送信する方法があります。
この方法を使えば、ユーザーは、単に印刷指示するだけで、望みの設定で印刷結果を得られますから、ユーザーから見れば最も望ましい方式と言えます。
一方、システムの担当者から見れば、そのようなコマンドを付加して印刷データを生成するように、プログラムの修正が必要になりますので、その点では、最も手間の掛かる方式ということになります。
OS/400 の世界で標準の SCS というコマンド体系の中には、縮小等、これらのコマンドが元々ありません。SCS というコマンド体系ができた時には、そのような機能を持ったカット紙対応のレーザーが無かったことが原因と思われます。
そこで、プリンター側では持っている、PAGES モードの中にある縮小等のコマンドを、どうやって OS/400 上のプログラムから送信するかという課題を解決する必要が出てきます。
PAGES モードのプリンターで考え出された方法が、"キャラクター・モード"と呼ぶものです。
キャラクター・モードについては、バーコードの印刷方法 - 第2回 コマンドを使う、もう一別の方法 - の回で簡単にご紹介していますが、ここではもう少し詳しくお話します。
PAGES設定の中のキャラクター・モード設定

キャラクター・モードの基本的な考え方は、OS/400 上のプログラムの中では、あくまでも文字データとして扱われるが、それが、対応するプリンターに届くと、プリンターの中ではコマンドとして扱われるというものです。
それを実現するために
1. 先頭に"&$%$"という、通常のデータとしてはあり得ないような4文字を付ける。これを受信したデータは、キャラクター・モードが始まったと認識します。
2. 次に、後続のデータの内、何バイトの文字をコマンドとして扱うのかを知らせるための、バイト数を送ります。
3. その後ろに、実際に送りたい PAGES のコマンドを指定します。
という構造になっています。

キャラクター・モードの特徴と注意点は、次のとおりです。
1. 16進データではなく、文字データとして扱いますので、5250端末画面でスプールを表示した時に、指定したバイト数やコマンドが、そのまま文字として表示されますので、デバッグし易くなります。また、そのままプリンターに印刷させることによってもデバッグになります。
2. 文字データである限り、実際には文字として印刷されることはありませんが、ページの中の場所を取りますので、ページの中のどの場所に配置するかを考慮する必要があります。言い方を変えると、"Current Print Position"(現在の印字位置、ドット・プリンターでは印字ヘッドが印刷のために移動して、現在いる場所)は、キャラクター・モードのデータ分は移動しているということを忘れてはいけないということです。
3. キャラクター・モード開始を示す4文字には、"&$%$"の他に"$?!#"という組み合わせもあります。プリンターの初期設定のデフォルトは、"Off"になっていて、この設定をどちらかの組み合わせに変更することで、有効になります。どちらか一方しか指定できませんので、キャラクター・モードを使ってコマンドを送信するためにプログラムを編集する際には、初期設定と合わせた文字列に統一します。

では、A4用紙に横長で、縦横75%に縮小して印刷するためのコマンドをサンプルに、キャラクター・モードを使って、どのようにデータを送るかをご説明します。
1. 開始の文字列は、"&$%$"とします。
2. 送りたいコマンドは、次のコマンドでこの順番に並べることが重要です。
1B 7E 46 00 05 00 00 13 00 00       /* A4指定自動選択       */
1B 7E 51 00 01 01                       /* 縦・横75%     */
1B 7E 50 00 01 03                        /* 左下 270度回転 横長  */
3. 次にコマンドのバイト数を数えますが、2文字で1バイトになりますから、
10バイト(A4指定) + 6バイト(75%縮小) + 6バイト(横長) = 22バイト
22を16進数に変換すると、"x16" になりますから、キャラクター・モードで送る文字データとしては、全体で次のようになります。
&$%$00161B7E46000500001300001B7E510001011B7E50000103
この文字列を、印刷データの先頭に配置するように、プログラムを編集します。

2016年3月21日月曜日

連続用紙への印刷から、カット紙への印刷に移行する -第2回 単純な縮小印刷-

連続用紙に印刷していたデータを、カット紙にそのまま縮小印刷する方法は、3つ考えられます。それぞれ設定方法が異なり、それに応じて運用する場合の操作方法が異なってきますので、どの方法を採用するかは、準備の手間と、エンド・ユーザーの意見を併せて検討して、決める必要があります。ここでは、カット紙を印刷するプリンターは、InfoPrint1000J等の、PAGESモードのプリンターを前提とします。
また、AS/400 からは、PCOMMのプリンター・セッションを使用したPDT印刷か、HPT機能を使用した LAN 直結印刷を想定しています。(5400エミュレーターIIを使用した Telnet5250E 接続の場合には、今までお話したように、5400エミュレーターIIで縮小設定を行うのが良いと思います。)
PAGES印刷条件の例

1. プリンターの初期設定で縮小印刷を指定する方法
これは、プリンターの"PAGES印刷条件"という初期設定メニューの中で、
- 用紙方向 : 縦/横
- 縮小率 : 連続用紙(15"x11")->A4/B4、縦横同じ比率で50%まで1%刻み
- 余白 : 長さを上下左右独立して指定
- 両面印刷 : する/しない、する場合には長辺綴じか短辺綴じの指定
といった各項目を、用紙トレイ毎に設定しておく方式です。
一度、操作パネル上で設定しておくだけで済みますので準備は簡単ですが、用紙トレイ毎にこれらの設定の組み合わせが異なる場合は、印刷する際に、別の方法で用紙トレイを指定しないとなりません。用紙トレイを指定するには、次にお話しする"2."や"3."の方法を採らざるを得ませんので、それであれば、縮小の指定も一緒に行う方が良いということになります。
そのように考えていくと、この方法は、用紙トレイの少ない場合にのみ有効な方法と言えると思いま
す。
もし、"2."や"3."の方法と併用したとしても、操作パネルでの初期設定は、プリンターの内部処理の優先順位が最も低くなっていますので、"2."や"3."の設定が有効となります。

2. PDT ファイルや、リモートOUTQの設定の中に縮小設定のコマンドを埋め込む方法
縮小設定や、余白の設定のための PAGES コマンドを、プリンター・セッション経由の場合は
プリンター・セッション経由の印刷 第2回 - PDFファイルの編集 -
の回でお話した方法で、HPT機能を使った LAN 直結印刷の場合には、
HPT機能を使った印刷 - WSCSTについて-
の回でお話した方法で埋め込むことで、指定することができます。
この場合、複数の設定の組み合わせ(縮小の比率や余白の値)があっても、1つ1つの設定の組み合わせに対応した OUTQ が作られることになりますので、ユーザーは、印刷先の OUTQ を切り替えることで、縮小の設定を切り替えて印刷するという運用を実現できます。
コマンドを埋め込む際の注意点は、
- 縮小率を指定するコマンドは、必ず、用紙トレイ指定のコマンドの後ろで指定すること
- バーコード・コマンドを使ったバーコード印刷のあるデータを縮小する際には、必ず、縦横同じ比率の縮小率を指定すること(連続用紙->A4/B4という縮小率の指定は、縦横の縮小率が異なるため、バーコードの位置や大きさが正しく印刷されません。)
この方法であれば、同じプリンターに対しても、ユーザーが印刷先に指定する OUTQ さえ正しく指定していれば、様々な種類の設定を切り替えて印刷させることができるというメリットがあります。

ユーザーによる OUTQ の切り替えも難しいような場合には、次の"キャラクター・モード"を使って、印刷データにコマンドを埋め込むという方法が有効になりますが、その説明は長くなりますので、次回に譲ります。
 

2015年11月22日日曜日

バーコードの印刷方法 - 第2回 コマンドを使う、もう一別の方法 -

前回お話した"APW"のバーコード・パラメーターを使う方法は、対応できるプリンターの種類や接続方法の条件がありました。また、毎ページ同じ場所のデータを、毎ページ同じ場所に印刷するには良いのですが、それらがページ毎に変化する場合には、対応できません。
そこで、プログラミングが必要となる、手間の掛かる方法ですが、それらの制限を緩和できる方法を、今回はお話します。

1. "5400プリンター拡張コマンド(テキスト・コマンド)"を使用する
このコマンドの仕様は、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/manual/lineimpact/pages_command.html
考え方としては、通常のデータでは無いような3文字("!#%"か"!@&")の後に、「バーコード印刷」「バーコード設定」のコマンドを「文字データ」として、印刷データの中に組み込むと、プリンターがそれらを、文字ではなくコマンドと解釈してバーコードのイメージを生成して印刷するというものです。
インパクト・プリンターでのバーコード印刷サンプル
特徴は、次のとおりです。
- コマンドの構造が簡単であること
- コマンドを文字として入力しますので、スプールを表示した時に、そのまま文字として表示されることにより、後で確認し易いこと
- バーコードの他に、文字拡大、OCR-B フォント指定も指定できること

一方、注意点は
- 使用可能なプリンターは、5400 シリーズのライン・プリンター(モデル006、S06を除く)と、5400エミュレーターIIを使ってTelnet5250E接続した 5577 系とPAGES対応のプリンターになること

- 5400 プリンターや 5400 エミュレーターII の初期設定で、先頭の3文字を設定すること
- コマンドを記述した場所の影響で2行に跨ってしまうと、コマンドの中に「CR+LF」(復帰+改行)が含まれてしまうことになりますので、避けた方が良いこと(次の2つの方法にも共通)
- コマンドと言っても、印刷されない文字データという扱いですから、1ページの中の印刷する文字の無いところに配置すること(次の2つの方法にも共通)
- 特にバーコードを印刷するためのコマンドは、その後、改行することで実行されますから、最後に必ずLF(改行)を送信すること(次の2つの方法にも共通)

です。

2. "//LA// コマンド"を使用する
5557シリーズと、5577-H05/G05 プリンター単体の場合は、5557拡張制御コマンド"//n// コマンド"を使用できます。
バーコード用のコマンドは、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/pdf/5577g05h05_command_enlargement.pdf
http://www.ricoh.co.jp/pps/download/pdf/5577g05h05_command_notes.pdf
コマンドの考え方や使い方は、「1」のコマンドのものとさほど変わりません。
注意点も
- 使用可能なプリンターは、5557 シリーズと、5577 シリーズでも"H05""G05"モデルののドット・プリンターになること
- プリンターの初期設定で「プリンター・タイプ」を「5557モード」に変更すること
- コマンドの中に、何バイトのコマンドかを示す「カウント」を指定しますが、コマンド全体が2行に跨ることは避けること
です。

3. "キャラクター・モード"を使用する
"キャラクター・モード"は、IBM ブランド時代から、ドット・プリンターでも、PAGES モードのレーザー・プリンターでもサポートしてきた機能なので、上記の2つの方法よりも使用可能なプリンターの種類は多くなります。プリンターが解釈できるコマンドを、文字データとしてプリンターに送信するという基本的な考え方は同じで、異なる点は
- 先頭に付加する文字列は、”&$%$"か、"$?!#"の4文字であること
- プリンターが、コマンドやデータとして解釈する部分はその後に続く何バイトかを、4文字の後に2バイトの16進数で追加します。(2文字が1バイトです。この4文字は数に含めません。)
対応機種や実際のコーディングのサンプルは、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/support/techinfo/character_mode_jp.html
注意点は
- プリンターの初期設定で、先頭の4文字を設定する必要があること
- ライン・プリンターの5400シリーズでは、"5577モード"で使用する場合であっても、キャラクター・モードはサポートしていないこと
(従って、QRコード用のコマンドは、"5577モード"で持っていますが、下で述べる"透過モード"を使わないと、AS/400 からは送信できないということになります。)
他は、上の2つの方法と同様です。


以上の3つの方法は、文字データとして、PC 用のプリンターのコマンドをAS/400から送信し、プリンターの機能としてコマンドとして解釈し、処理する方法です。
そのため、プリンターのモデルによる制約がありますが、もう一つ別の方法として、16進コードで、PC 用のプリンターのコマンドを送信する"透過モード"という方法があります。
こちらの方が、PCOMM のプリンター・セッションの機能として、印刷データの中に16進コードで含まれたプリンター用のコマンドを、プリンターに対してコマンドとして送信する方式なので、プリンターのモデルやメーカーの制約は少なくなります。
しかし、16進で記述することになりますので、文字データして記述するよりも、ハードルは高くなると思います。
この方法に関しても、下記のサイトで詳しい情報を公開しています。
http://www.ricoh.co.jp/pps/support/techinfo/transparent_mode_jp.html

考え方は、キャラクター・モードと似たところがあって、先頭に"03"、そして送信するコマンドのバイト数を付加して、AS/400から送信すると、プリンター・セッションでは、"03"を外し、バイト数の値で指定された長さのコマンドをプリンターに送信するというものです。
従って、あくまでもプリンター・セッション経由、PDT印刷が前提となります。

どの方法にしても、プログラミングのスキルが必要になりますし、実際に印刷しながらの調整は必要になりますので、もっと効率の良い簡単な方法はないのか ? という疑問も出てきます。
そこで、次回は画面上でバーコードを大きさや場所を簡単に指定できるソリューションをご紹介します。