始めの言葉

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

2015年12月10日木曜日

バーコードの印刷方法 - 第4回 もっと柔軟な方法 - Mapping Suite の場合-2

ページによってバーコードの種類や位置が変わる帳票を設計するには、2種類のアプローチが考えられます。
"MapDraw"では、前回お話したように、スプール・データの中の、行番号と桁幅を指定してバーコード表示することができますから、ページ毎にバーコード表示するデータの位置が異なっていても、それらを全て1ページに含むような設計をしておけば、バーコード表示するデータが存在した箇所のみ、バーコードは表示されます。また、同じ場所にあるデータを、あるページでは文字として印刷し、他のページではバーコード表示するといった場合には、それらを切り替える条件を定義できれば、1つの設計で対応できることになります。

そのような技が通用しない場合には、別のアプローチとして、バーコードの種類や配置の組み合わせに応じた帳票設計を、その組み合わせの数だけ用意しておいて、それらを1本のスプールに対して切り替えながら適用するという方法が考えられます。
これは、1本のスプールの中で、1ページ目が表紙、2ページ目以降が明細のページというような、請求書などに多い、複数のフォーマットを必要とする帳票の場合と同じ考え方です。

MapDraw 表紙ページのプレビュー画面
MapDraw 明細ページのプレビュー画面
左の上のサンプル・イメージは、Bayトップ書房という架空の書店の見積り書の、1ページ目の表紙を、帳票設計ツールの"MapDraw"で設計した後、プレビュー表示した画面です。画面の左半分がプレビュー画面、右半分が1ページ目のスプール・データを表示しています。
("MapDraw"では、プレビュー表示した際、右側の画面のスプール・データは、帳票に表示されたデータのみ緑色に変わります。これによって、データの抜けが無いかを確認できます。)

左の下のものは、2ページ目以降の明細ページをプレビュー表示した画面です。表紙と全く異なる設計になっていることが、お分かりいただけるかと思います。

では、この2種類の帳票設計を1つのスプールに対して、1ページ目と2ページ目以降で、どのようにして切り替えて適用するのでしょうか ?

話は先に飛びますが、"Mapping Suite"が、OS/400上でPDFを生成するコマンドは、"MAPSPLPDF"なのですが、これの主なパラメーターには次のものがあります。
1. 対象となるスプール・ファイルを特定するためのファイル名、ファイル番号、ジョブ名、ジョブ番号、ユーザー
2. 適用する帳票設計の名称(フォーマット名)とシーケンス番号
3. PDF化する対象のスプール・ファイルの中の開始ページと終了ページ
4. PDFファイル名、生成先のフォルダー
5. コード・ページ

この中で、表紙ページと明細ページの切り替えのために重要なのが、"フォーマット名"と"シーケンス番号"です。"フォーマット名"は、Bayトップ書房の見積書として、1つです。シーケンス番号には、表紙ページ用に"00010"、明細ページ用に"00020"を割り振り、"MAPSPLPDF"を実行する際には"*MRG"を指定することで、スプール・ファイルの各ページに対して、その条件に応じた設計(ここでは、表紙用の"00010"と明細用の"00020")を自動的に切り替えて適用します。

表紙ページの"プロジェクトのプロパティ"画面
ここで出てきた"フォーマット名"は、"MapDraw"で設計する際に"プロジェクトのプロパティ"画面で指定します。左の画面イメージは、"表紙ページ"の"プロジェクトのプロパティ"画面で、ここでは"BAYTOP"となっています。
このフォーマット名は、"明細ページ"の設計にも使用します。

"シーケンス番号"も、同じ"プロジェクトのプロパティ"画面で指定します。左の"表紙ページ"の"プロジェクトのプロパティ"画面では、"00010"となっています。"明細ページ"では、この値を"00020"とします。

表紙ページの"条件設定"画面
もう1点、重要なのは、表紙ページと明細ページの切り替えの条件付けです。表紙ページと明細ページのスプール・データの違いに着目して、切り替え条件を設定します。
このBayトップ書房の見積書の場合は、見積り番号の位置が、表紙ページでは、5行目の106桁目から114桁目にありますが、明細ページでは、4行目の106桁目から114桁目にあることから、左の画面イメージにあるように、表紙の"プロジェクトのプロパティ"画面で指定しています。(明細ページでは、行の値が 4になっているわけです。)
この切り替え条件で正しく切り替わるかを確認するには、"MapDraw"のプレビュー機能の一つである"マルチ・プレビュー"を使用します。"マルチ・プレビュー"では、"MapDraw"画面で、スプール・データのページ番号を次々と変えていった時に、設定された条件に応じた設計の帳票として表示されます。このページの上の"表紙"と"明細"の2つの画面が、それらです。


2015年12月6日日曜日

バーコードの印刷方法 - 第3回 もっと柔軟な方法 - Mapping Suite の場合-1

前回までのバーコードの印刷は、プリンターの制御コマンドをプリンターに送信して、プリンター内部でバーコード・イメージを生成して印刷する方法でした。そのため、バー幅の指定が細かくできるといったメリットがある一方、どうしても使用可能なプリンターのモデルやメーカーの制限が出てきます。今回は、そのような制限の無い、もっと柔軟な印刷方法をお話します。併せて、mayayam様からいただいたコメント"1ページ目と2ページ目以降で異なるバーコード指定が可能なソリューション"もご紹介したいと思います。

1. APWの使用を前提にすると、"CHGMRG"データを使用すると、スプールのページ単位で異なるフォームを適用する、つまり、位置や種類の異なるバーコードを指定することは可能です。"CHGMRG"データの使用方法に関しては、次の資料(APWのマニュアル)の14ページ目以降にで公開されています。
http://www.ricoh.co.jp/pps/download/pdf/apw_print.pdf
ただ、これは、APWを使用する以上、使用可能なプリンターの制約はありますし、コーディングも大変だと思います。

2. 一般的な Windows Office アプリを使用するとしては、MS Access 上で予めバーコード指定のある帳票設計を行っておき、そこへ、MS Access の機能を使って、AS/400 上の DB から抽出したデータをはめ込んで、Windows プリンターに印刷するという方法が考えられます。この方法では、プリンターから見ると、文字や数字だけでなく、バーコードも全てイメージ・データとして送られてくることになります。従って、読み取り精度を向上させるには、バーコード全体の大きさを調整することになると思います。

3. "帳票ソリューション"を使用する方法は、費用は掛かるものの、既存のアプリケーション・プログラムを変更せずに、柔軟な条件でバーコードを付加した帳票を作成することができるものです。
様々な種類の"帳票ソリューション"が販売されていますが、価格の違い以外に、大きくは次の 2 種類に分けられます。
- OS/400 上で印刷データ(PDF ファイルを含む)を生成するタイプ
- AS/400からスプールを Windows サーバーに受信して、Windows サーバー上で印刷データ(PDF ファイルを含む)を生成するタイプ
それぞれには得失があります。
前者は、Windows サーバーを立てて保守・運用していく必要が無いという大きなメリットがあります。また、運用への組み込みには、ユーザーが馴染んだ RPG や CL のスキルを活用することができます。
後者は、AS/400 側の CPU への負荷が最小限で済むというメリットがあります。
どちらのタイプを選択するかは、価格面も考慮に入れて総合的に判断する必要があるかと思います。
ここからは、筆者が技術サポートを担当している、前者のタイプのソリューション"Mapping Suite"上で、バーコードをどのように指定し、印刷するかをお話します。

"Mapping Suite"では、帳票設計は、"MapDraw"というツールを使って、Windows PC 上で行ないます。
"MapDraw"は、下の画面のように、左右で分かれています。
MapDraw画面(左側オーバーレイ設計画面・右側スプール表示画面)
左側の画面で、オーバーレイ(固定文字や固定罫線)の設計を行ないます。
右側の画面は、対象となるスプール・データを表示し、それを参照しながら、左側の画面で、オーバーレイ上へのデータの配置を指定していきます。







バーコードを指定するには、下の画面にあるように、バーコードに変換するデータのフィールド(右側の画面で背景が青色になっている箇所)を、左側の設計画面に配置し、そのゾーン(と呼びます)のプロパティ(属性)でバーコードとして表示することを指定します。
ゾーンのプロパティ画面(CODE39を指定)
左の画面では、プロパティとして、
- 5 行目の、106 桁目から長さ 9桁を
- バーコード CODE39
で表示することを表わしています。

なお、"Mapping Suite"では、1次元バーコードは専用フォントを使って生成しますので、プロパティの中の"フォントとスタイル"画面で、フォントに"BC39L"を指定します。バーコードの大きさは、このフォントのサイズと、高さ(50% - 200%間)で指定します。
フォントとスタイル画面(フォントにBC39Lを指定)
1次元バーコードで使用する専用フォントは、"MapDraw"と一緒に Windows 用の TrueType フォントとしてご提供しています。

ちなみに、2次元コードである"QRコード"は、上の"データ位置"の画面で、バーコードの種類を"QRコード"を選択した上で、"詳細"ボタンをクリックすると、"バーコードの幅"で大きさと、他に"エラー・レベル"を指定します。


プレビュー表示すると、設定したバーコードがどのように表示されるかを画面上で確認できます。
プレビュー表示(青矢印がCODE39)

では、1ページ目と2ページ目以降で異なる種類のバーコードを異なる場所に表示するには、どのように設計すかを次回、お話します。