始めの言葉

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

2018年7月28日土曜日

MapDraw を使った帳票設計のテクニック 第6回 - 四則演算 - 2 -

今回は、実際に四則演算の機能を使って、明細のページ単位の小計の計算結果を追加表示してみましょう。
次のようにスプール・ファイル内にある 2 列の数値の内、左側の数値に対しては小計 (225,706) がありますが、右側の列の数値にはありません。そこで、この右側の列の合計を計算して表示するように設計します。
スプール・ファイル内の元の数値
プレビュー画面
1. 数値をそのまま表示するために、開始行を 8 行目、終了行を 22 行目としたグループ "g1" と、その中に通常のゾーンを MapF 画面に配置します。(上図参照)
2. 前回で四則演算の基本をお話したように、先ずは "Z12M" と名付けたメモリー・ゾーンをグループ "g1" の中に作って、金額を記憶させます。
メモリー・ゾーンの定義
3. 次は数値計算ゾーンです。メモリー・ゾーンで記憶した値を次々と足していく計算を、どのように指定したら良いでしょうか ? 数値計算ゾーンに対して "Z12T" と名付けるとして、次のように定義します。
- タイプは、"メモリー"、"数値計算" とする。
- 長さは、"0" とする。
- ゾーンの後に追加する文字に、"[[Z12T]]+[[Z12M]]"という計算式を記入する。(大括弧2つでゾーン名を囲むことが必要です。)
お分かりと思いますが、グループで指定した行の範囲に対して 1 行分ずつ値を次々と足していくという考え方です。
数値計算ゾーンの定義
4. 小計を表示させるために、開始行、終了行どちらも 1 行目とした固定グループを定義します。ここでは、"gt" と名付けます。
小計用の固定グループの定義
5. この固定グループ内に次のように定義したメモリー置換ゾーン "Z12ST" を定義します。
- タイプタイプは、"メモリー"、"メモリー置換" とする。
- 桁は、"1"、長さは、"0" とする。
- ゾーンの後に追加する文字に、数値計算ゾーン"[[Z12T]]"を記入する。(大括弧2つでゾーン名を囲むことが必要です。)
メモリー置換ゾーンの定義
 6. プレビューしてみると、次のように小計が計算された結果が表示されていることを確認できます。(確認し易いように、数値計算ゾーンでは、下線付きを指定しました。)
プレビュー画面

2018年7月22日日曜日

MapDraw を使った帳票設計のテクニック 第5回 - 四則演算 - 1 -

MapDraw を使うと、スプール・ファイルのデータを元に四則演算して、スプール・データに無い合計の値等を表示させるような設計ができます。
とは言え、実際に使用されている事例から判断すると、次のような 3 桁区切りのカンマを追加するという、比較的地味な使い方の方が一般的なようです。
3 桁区切りのカンマを始め、四則演算には "メモリー・ゾーン" を活用します。例えば、次の MapDraw のプレビューの画面でお分かりのように、スプール・ファイル内に 3 桁区切りになっていない数値データがあったとします。
3 桁区切りのカンマが無いスプール・データの例
MapDraw 上の四則演算の設計の基本は、次のとおりです。
1. メモリー・ゾーン(整数メモリー、または浮動小数点メモリー)を使って、演算する値を Mapping に記憶させます。
2. 数値計算ゾーンで定義した計算式を使って、記憶したメモリー・ゾーンの数値を計算します。
3. メモリー置換ゾーンを使って、演算結果を表示させます。

では、この "金額" 欄の数値を、3 桁区切りのカンマ付きの表示になるように設計してみましょう。
1. この例では、数値は繰り返し行の 111 桁から始まって、15 桁 ありますので、次の画面のようにグループ内のゾーンを定義するのですが、その際に、ゾーンのプロパティにおいて、タイプに "メモリー"、"整数メモリー"を指定します。
整数メモリーを指定したメモリー・ゾーンの定義
 2. 画面を閉じると、次のように、メモリー・ゾーンはピンク色になっていることが分かります。ちなみに、プレビューしても何も表示されません。なお、このゾーンには "a" と名付けた条件を定義しています。"条件" については、別の機会に詳しくお話します。
メモリー・ゾーンの表示
3. このメモリー・ゾーンをコピーして、数値計算ゾーンを定義します。数値計算ゾーンの定義に当たっては、次の点にご注意ください。
- "タイプ" は、"メモリー"、"数値計算" を指定する。
- "データの長さ" は、必ず "0" とする。
- "ゾーンの後に追加する文字"欄に、計算式を記入する。
- 計算式には、メモリー・ゾーンの名前を 2 つの大カッコで挟む。
ここでは、3 桁区切りのカンマを追加するために、メモリー・ゾーンの値を単に 1 で割るという計算式を使用します。
3 桁区切りのカンマを追加するための数値計算ゾーンの定義
 4. この数値計算ゾーンも、メモリー・ゾーンと同様に、画面にはピンク色で表示されますし、プレビューしても何も表示されません。
数値計算ゾーンの表示
 5. では、計算した結果を表示させるために、メモリー置換ゾーンを定義しましょう。数値計算ゾーンをコピーして、次のように編集します。
- "タイプ" は、"メモリー"、"メモリー置換" を指定する。
- "ゾーンの後に追加する文字"欄に、数値計算ゾーン名を、2 つの大カッコで囲んで記入する。
メモリー置換ゾーンの定義
6. このゾーンは通常のゾーンと同じ扱いができますので、表示するフォントの種類や大きさ、色、あるいは、配置の左寄せや右寄せを指定することができます。実際に、上の画面を閉じると、通常のゾーンと同様に背景は透明です。
メモリー置換ゾーンの表示
7. 実際にプレビューしてみると、次のように 3 桁区切りのカンマが追加されていることを確認できます。後は、このゾーンの値は数値なので、メモリー置換ゾーンのデータの配置を右寄せに変更します。
プレビュー画面
ところで、何故、1 で割っただけで 3 桁区切りのカンマが追加されたかという疑問を持つ方もいらっしゃると思います。これには、MapDraw プリファレンス画面にある "四則演算" 欄の "桁区切り" の定義が効いていることをご記憶ください。
MapDraw プリファレンスの桁区切りの定義




2018年7月15日日曜日

MapDraw を使った帳票設計のテクニック 第4回 - 透かし文字 - 2 -

DrawF 画面で設計する、オーバーレイよりも下に、データを使った透かし文字を表示するには、MapDraw の"コンポーネント"という機能を使います。大まかな考え方は、次の通りです。
1. DrawF 画面のみ、つまりオーバーレイだけを持つ、コンポーネントを作成し、生成します。
2. DrawF 画面の無い、MapF 画面のみのプロジェクト・ファイルを設計し、その MapF 画面に、透かし文字となる、文字の色をグレーに指定したゾーンを配置します。
3. その画面で、"1." で生成したコンポーネントを指定して、追加します。
4. "サマリー” 画面で、実行順序を次のように設定します。"2." で指定した透かし文字のゾーンが1番。"3." で追加したコンポーネントが2番です。
5. 後の手順は通常どおり、"4." のプロジェクトを生成します。

では、実際の画面で見ていきましょう。
1. MapDraw を起動して、"新規" を選択すると表示されるメニューの中に、"コンポーネント" がありますので、これを指定します。
新規 -> コンポーネントを選択
 2. コンポーネントではありますが、次のような "新規プロジェクト" という、いつもの画面が表示されます。ただし、プロジェクトの作成の場合と異なるのは、フォーマット名とシーケンスに既に値が入力済みで、変更できないことです。
新規プロジェクトの画面
3. "OK" ボタンを押すと表示されるのは、次のようにプロジェクトの作成の画面と変わらないようですが、MapF 画面に切り替えられない点が大きく異なります。
新規コンポーネントの作成画面
4. ここでは、作成済みのプロジェクト・ファイルのオーバーレイをコピーしてきました。DrawF 画面で、キーボードの "Ctrl" キーと、"A" キーを一緒に押すと、全ての要素を一括で指定できますので、それをコピー・ペーストすると簡単です。その後、MapDraw の図形タブ画面にある "コンポーネント" ボタンを押すと、次のような画面が現れます。オーバーレイのみなので、拡張子は "mpw" になります。任意の名前を付けて生成します。
コンポーネントの生成画面
5. 生成中には、プロジェクトの生成の時と同様に、次のような画面が現れます。フォントのチェックは、外しておきます。
コンポーネント生成の設定画面
6. 最後の、次のような生成レポートが表示されます。赤マークが無ければ完了です。
コンポーネントの生成レポート
7. 次に、オーバーレイの無いプロジェクトを用意し、そこに透かし文字用のゾーンを定義します。ここでは、作成済みのプロジェクト・ファイルに対して、オーバーレイを削除して、別のフォーマット名を付けます。
オーバーレイを削除し、フォーマット名を指定した画面
 8. ここでは、スプール・データの中の "見積り番号" を透かし文字とするために、"WM"という名前を付けたゾーンを定義します。ゾーンのプロパティ画面において、フォントのサイズを "48" ポイント、文字の色をグレー、角度を "45" 度に指定します。
文字のサイズを48ポイント、色をグレー、角度を45度に指定した "WM" ゾーン
9. "6" までの手順で作成したコンポーネントと組み合わせるために、"コンポーネントの表示" ボタンを押します。次のような画面が表示されますので、"追加" ボタンを押します。作成済みのコンポーネントを選択して、"開く" ボタンを押します。
コンポーネントを指定する画面
 10. 次のようにコンポーネント欄に指定したコンポーネントのファイル名が表示されますので、"OK" ボタンを押します。
指定したコンポーネントのファイル名が表示された画面
11. "プロパティ" タブ画面のメニューにある "サマリー" をクリックすると、次のような画面が表示されます。このプロジェクト・ファイルでは、"6" までの手順で作成したコンポーネントである "WM" ゾーンは、最後に追加したので、"グループ外のプロジェクト" の中の最下段にあります。そこで、▲マーク 2つのボタンを押して、"WM" ゾーンを最上段に移動させます。なお、"10." までの手順で追加したコンポーネントが、"WM" ゾーンの直下にあることを確認してください。この設定によって、1番目に "WM" ゾーンが実行され、その次にコンポーネントであるオーバーレイが実行されるようになります。つまり、"WM" ゾーンが表示する透かし文字が、オーバーレイの下に配置されることになることを表しています。
サマリー画面を使った実行順序の設定
12. 実際に、プレビューしてみると、次の画面のように、透かし文字がデータの文字はもちろん、オーバーレイである罫線の下に表示されていることが、分かります。
プレビュー画面
13. 後は、通常通り、プロジェクトの生成を行い、MapDraw フォーマットの取り込みを行います。MapDraw フォーマットの取り込み画面では、次のように、プロジェクト・ファイルの分と、コンポーネントの分の 2 つが表示されていますので、両方とも取り込むことを忘れないようにする必要があります。
MapDraw フォーマットの取り込み画面
14. "MAPCPYSPLF" コマンドを使って、次のように、スプール・データ内の見積り番号を透かし文字とする PDF ファイルができました。
スプール・データの見積り番号を透かし文字とした PDF ファイル

2018年7月8日日曜日

MapDraw を使った帳票設計のテクニック 第3回 - 透かし文字 - 1 -

今回からは、透かし文字、ウォーター・マークとも言いますが、を設計する方法をお話しします。
透かし文字を使った印刷結果の例として良く見るのは、斜めに配置された "複写禁止" 等の薄いグレーの文字が予め印刷された用紙に、データが印刷されたものです。そのような透かし文字を MapDraw を使って設計することは、簡単です。
例えば、次のような帳票設計中の画面の "DrawF" 画面において、テキスト・ゾーンとして、"複製禁止" という文字をサイズの大きな 80 ポイントで追加します。
グレーの文字を追加する

追加したテキスト・ゾーンに対して、右クリックすると、次のようなメニューが表示されますので、"回転" -> "その他" を選択します。
右クリック -> 回転 -> その他 を選択する
表示された画面では、回転角と回転方向を指定できますので、ここでは右斜め上向きに 45 度の傾きを指定します。
45度, 反時計回り を指定する
その結果のプレビュー画面は、次のとおりです。
プレビュー画面
ここで、注目すべきと思う点は、次の点かと思います。
- "複製禁止" の中の "止" の文字は、タイトル欄の網掛けの上に表示されていて、読める状態になっている。
- "複製禁止" の中の "複" の文字は、データである "専門書" よりも下に表示されているため、データの読み取りに影響を与えない。
ちなみに、同じ DrawF 画面にある網掛けを "止" よりも上に表示するとしたら、"複製禁止" のテキスト・ゾーンを右クリックすると表示されるメニューの中から、"背面に移動" を指定します。
右クリック -> 背面に移動 を選択する
その結果のプレビューは次のとおりで、網掛けによって "止" の文字は隠れていますが、"複" の文字は、やはりデータの下に表示されています。
透かし文字を背面に変更した結果
透かし文字の本来の役割を考えると、データよりも上になって表示されることは、避けないとならないと思います。

では、透かし文字が固定文字ではなく、データの一部を使ったものである必要がある場合は、どのように設計したら良いでしょうか ?
データを使うためには、MapF 画面で指定する必要があります。上の固定文字の場合と同じように、文字の色をグレーとしたゾーンを斜めに回転させれば良いでしょうか ?
実際に、そのように設計した結果が次の画面です。
ゾーンを使ってデータを透かし文字とした例
この例では、スプール・データの右上にある "見積り番号" をグレーの色を指定し、斜め 45度に配置しています。このプレビュー画面で分かることは次のとおりです。
- 透かし文字が、他のデータの上に表示されて、それを隠している。
- 透かし文字が、DrawF 画面で指定している網掛けよりも上に表示されている。
少なくとも、透かし文字が他のデータを隠してしまってはいけません。これに関しては、次の方法で、修正できます。
MapDraw では、DrawF 画面と MapF 画面それぞれにおいて、各要素の実行順序を設定することができます。この透かし文字のゾーンが、他のデータの上に表示されたということは、透かし文字のゾーンが最後に実行されたことに原因がありますので、実行順序を先頭になるように変更します。
そのためには、"プロパティ" タブを選択して、"サマリー" ボタンを押します。
MapF 画面のサマリー画面
透かし文字として追加したゾーン "WM" は、単独で存在するものですから、"グループ外のプロジェクト" を選択して、左にある "+" ボタンを押して展開します。
サマリーの中の透かし文字のゾーン
一番下にある、"WM" ゾーンを指定して▲マーク2つのボタンを押すと、次の画面のように、最上段に移動できます。これで実行順序を変更できました。
ゾーン "WM" を最上段に移動した結果
その結果をプレビューした画面は、次のとおりです。
プレビュー画面
透かし文字のゾーンがデータの下に表示されるようになり、データを隠すことはなくなりましたが、DrawF 画面で設計している固定文字を隠してしまうことには、変わりはありません。
では、どのように設計したら、DrawF 画面の文字を隠さないようにすることが、できるでしょうか ?

2018年7月1日日曜日

MapDraw を使った帳票設計のテクニック 第2回 - 2up 指定 - 2 -

前回に続いて、2ページを1ページに集約 (2up) した PDF ファイルを生成するための、帳票設計の手順をお話します。
8. シーケンス "00010" のプロジェクト・ファイルの MapDraw のタブを "MapF" 側に切り替えます。スプール・データをそのままの配置で、A4 左半分に表示するための設計を行います。このサンプルでは、固定グループ "g1" としては、開始行に 1 行目、終了行に 66 行目を指定します。その中に、ゾーン "Z11" として、次の設定を行いました。
- データの配置は、6 桁目から長さ 123 桁
- フォントは、MS ゴシック 7 ポイント、固定ピッチ 13
- ゾーンの間隔には、39.79 10/mm
これらの設定値は、A4 サイズの左半分に、1 ページの全データをもれなく、しかもバランスよく配置するために選択したものです。
シーケンス"00010"のプロジェクト・ファイルのMapF画面
そのプレビュー画面
9. 同じ設計を、シーケンス "00020" のプロジェクト・ファイルの MapF 画面にも適用します。ただし、右半分の画面に、固定グループとそれに付属するゾーンを配置します。この時、シーケンス "00010" の MapF 画面で設計済みの固定グループ "g1"を指定してコピーし、シーケンス "00020"のMapF 画面でペーストすると、ゾーンも一緒にセットでコピーされるので、便利です。
シーケンス"00020"のプロジェクト・ファイルのMapF画面
そのプレビュー画面
なお、プレビュー画面では、1 ページ目からページをめくっていくと、シーケンス "00010" のプロジェクトでは偶数ページが、シーケンス "00020" のプロジェクトでは奇数ページが、次のようにグレー表示となります。これは、そのページには設計が適用されないことを表しますので、それぞれのプロジェクトのプロパティで設定した条件が、正しく機能していることを確認できます。もちろん、マルチ・プレビュー・ボタンを押してからページをめくっていくと、奇数ページと偶数ページで、データが表示される画面が左 -> 右 -> 左と切り替わっていくことでも、条件設定が正しく機能していることを確認できます。
シーケンス"00010"のプロジェクトで偶数ページをプレビューした時の画面
10. 以上で設計は完了したので、"プロジェクトを生成する" ボタンを押して、2 つのプロジェクト・ファイルを保存します。ここでは、プロジェクト・ファイル名は、シーケンス "00010" には  "2UPTEST1"、シーケンス "00020" には "2UPTEST2"と指定しました。
シーケンス"00010"のプロジェクトの生成画面
11. 後の PDF ファイルを生成するまでの手順は、通常の手順とほとんど変わりません。先ずは、Mapping メニュー画面で "2. MapDraw フォーマットの取込み" を行います。
MapDraw フォーマットの取込みの画面
12. PDF ファイル生成のコマンドを実行します。MAPCPYSPLF コマンドを使用しますが、シーケンス "00010" と "00020" という 2 種類のフォーマットを適用しますので、"Sequence" パラメーターには、"*MRG" を指定します。その他の注意点はいつもと同じで、次の値を指定することです。
- パラメーター "Mapdaw format language" には "*XPS"
- "XPS Printer/outfile language" には "'*PDF'"(大文字であることに注意)
生成された PDF ファイルを表示した画面