始めの言葉

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

2019年1月26日土曜日

XPSConfig ファイルを使った PDF セキュリティ - P/Wの設定 -

今回は、いつものベイトップ書房の見積書のスプール・ファイルの中の 2 種類のデータを、それぞれ所有者パスワードと使用者パスワードに設計する方法をご紹介します。
1. MapDraw 上で、対象となるデータを元に、次のように "アーカイブ" ゾーンを追加します。アーカイブ・ゾーンの種類としては、"Index" を選択します。
ここでは、所有者パスワードのゾーン名を"OWNPW"、使用者パスワードをのゾーン名を"USRPW"と名付けます。なお、当然のことながら、アーカイブ・ゾーンは、プレビュー画面でも、PDF ファイルにも表示されません。
パスワード用のアーカイブ・ゾーンの設定
2. その後は通常通り、プロジェクトの生成を行い、OS/400 上の Mapping メニューの中の "2. MapDraw フォーマットの取り込み" を行います。
3. IFS 上の \mapping フォルダーの直下にある XPSconfig ファイルを編集して、PDF ファイルのセキュリティ設定を行います。ここでは、次のように "PDFPW" という名称のセキュリティ設定を追加します。
4行目 と 5行目で、MapDraw 上で定義したパスワード用のアーカイブ・ゾーン名、所有者用と使用者用を "[[]]" で囲んで定義していることにご注意ください。
<PDFPW>
<language>PDF</language>
<encryptmode>on</encryptmode>
<encryptownerpwd>[[OWNPW]]</encryptownerpwd>
<encryptuserpwd>[[USRPW]]</encryptuserpwd>
<encryptallowprint>off</encryptallowprint>
<encryptallowhightlevel>on</encryptallowhightlevel>
<encryptallowdataextraction>off</encryptallowdataextraction>
<encryptallowaccessibility>on</encryptallowaccessibility>
<encryptallowmodify>off</encryptallowmodify>
<encryptallowcomment>off</encryptallowcomment>
<encryptallowassemble>off</encryptallowassemble>
</PDFPW>
4. 以上で準備できましたので、次のようなコマンドを実行して、先ず XPS ファイルを生成します。
MAPCPYSPLFコマンドの1画面目
MAPCPYSPLFコマンドの2画面目
5. 生成された XPS ファイルを、MAPXPS コマンドを使用して PDF ファイルに変換するのですが、その際にパラメーターとして "3" で定義した "PDFPW" という名前のプロファイルを指定します。
MAPXPSコマンドの1画面目
MAPXPSコマンドの2画面目
6. 生成された PDF ファイルを AdobeReaderで開こうとすると、次のようにパスワードを入力する画面が表示されます。
PDF パスワードを入力する画面
ここで、所有者パスワードか使用者パスワードを入力することによって、初めて PDF ファイルが表示されます。
表示された PDF ファイルで "ファイル" -> "プロパティ" -> "セキュリティ" を選択すると、次のように " パスワードによるセキュリティ" とか、"文書のすべての内容が暗号化されている" という説明が表示されているのが分かると思います。
PDF ファイルのセキュリティ画面
更に "詳細を表示" ボタンを押すと、次のような画面が表示されます。
PDF セキュリティの詳細画面


2018年12月8日土曜日

MapDraw を使った帳票設計のテクニック 第19 回 - スプールに無いデータを追加する

MapDraw を使った帳票設計では、データはスプール・ファイルにあることが基本ですが、スプール・ファイルに無いデータを、帳票上に追加することもできます。例えば、MAPCPYSPLF コマンドを使用して PDF ファイルを生成するに当たって、スプール・ファイルの中の日付や時刻ではなく、PDF ファイルが生成された日付や時刻を追加表示することが、次の手順を使えば可能です。

1. 対象のスプールの属性を調べて、1ページ当たりの行数を確認します。下の画面の例では、"66 行" になります。
スプールの属性 66行/1ページ
2. 次の “3” で指定する、スプールに無いデータが、上の ”1” で確認した行数 +1 行目に追加されることを前提に、MapDraw 上で帳票設計します。下の画面の例では、67 行目に 10 桁のデータが追加されることを想定し、”DATETIME” というゾーンを設定しています。
追加のゾーンの指定
3. プロジェクトの生成 → 取り込みを行った後、次のコマンドを実行して、"QTEMP" というライブラリー内に、"MAPUSRDTA" というデータ・エリアを作成します。この例では、YYYY/MM/DDという文字をデータエリア内に作成します。
CRTDTAARA DTAARA(QTEMP/MAPUSRDTA) TYPE(*CHAR) LEN(2000) VALUE('YYYY/MM/DD’)
データ・エリア作成コマンド
4.MAPCPYSPLFコマンドを使用して、PDFファイルを生成します。
MAPCPYSPLF コマンド 1 画面目
MAPCPYSPLF コマンド 2 画面目
MAPCPYSPLF コマンド 3 画面目
5. 生成された PDF ファイルを表示すると、”2” で指定した箇所に、”3” で追加したデータが表示されたことを確認できます。
追加された文字

データ・エリアとは、プログラム間、ジョブ間の制御情報として使用されるディスク上の記憶域を表すオブジェクトの一つで、OS/400 の機能の一つです。ユーザー定義のデータ・エリアとローカル・データ・エリアがありますが、ここで使用するのは、ユーザーが作成するデータ・エリアです。任意のライブラリーに作成でき、複数のジョブで利用可能です。

ここでは、MAPCPYSPLF コマンドを実行する際に、67 行目にデータ・エリアの内容を取り込んで処理するために、事前に "*.pag" ファイルとして表示することができません。ただ、データ・エリア内の値を表示するには、次のコマンドを実行します。


WRKDTAARA DTAARA(QTEMP/MAPUSRDTA)

次の画面が表示されますので、"5= 表示" を実行します。
データ・エリアの表示
次の画面のように、データ・エリア内のデータが表示されます。 
データ・エリアの内容の表示
この例では追加する文字は固定値でしたが、実際には日付や時刻等の変数を追加する方が多いと考えられます。日付や時刻の追加の場合のCLの例を次に示します。

DCL VAR(&SYSTME) TYPE(*CHAR) LEN(20)
RTVJOBA DATETIME(&SYSTME)
CRTDTAARA DTAARA(QTEMP/MAPUSRDTA) TYPE(*CHAR) LEN(2000) VALUE(&SYSTME)
MAPCPYSPLF…
これによって、データエリア (QTEMP/MAPUSRDTA) に YYYYMMDDHHNNSSXXXXXX がセットされます。



2018年10月13日土曜日

MapDraw を使った帳票設計のテクニック 第13回 - 条件の設定 - 2 -

サンプルとして使用している見積書のように、1 ページ目の鑑と、2 ページ目以降の明細という構成の帳票は、多くあると思います。鑑のページと明細のページの切り替えの条件としては、次のような設定方法もあります。
次の画面のように、条件設定の選択肢の中に "First" があります。これを鑑のページに適用します。
フォーマットを 1 ページ目に使用する条件設定

明細のページには、前回の条件設定のように、同じ条件を設定した上で論理ルール欄に "not 1" と設定します。つまり、2 つの相反する条件を適用する場合には、同じ条件を設定した上で、片方の論理ルール欄に "not 1" と指定すれば良いということです。
フォーマットを 2 ページ目以降に使用する条件設定
マルチ・プレビューの機能を使って、条件設定が正しく機能することが確認できたら、安心することなく、次の段階へ進みます。
それぞれのフォーマットに対して "プロジェクトを生成する" ボタンを押して、プロジェクト・ファイルを生成します。デフォルトでは "フォーマット名シーケンス番号"というファイル名になります。次の画面のようにファイル名を変えても構いませんが、1 つのフォーマットに対して同時に生成される 3 つのファイルのファイル名は同一であること、そして、フォーマット間ではファイル名を同一にしないことが鉄則です。
明細ページ用のプロジェクトの生成画面
MapDraw 上での生成が完了したら、OS/400 上の Mapping メニューの中の "MapDraw フォーマットの取り込み" を行います。
MapDraw フォーマットの取り込みを行う画面
フォーマットの取り込みが完了したら、次のコマンドを使用して、PDF ファイルを生成します。その際に重要なのは、1 つのスプール・ファイルに対して、複数のフォーマットを条件に応じて切り替えて適用する必要がある場合には、"Sequence" パラメーターの値を "*MRG" と指定することです。単独のフォーマットを適用する場合には、ここには "00010" といったように固定の値を入力しますが、複数のフォーマットを条件に従って適用するためには、"*MRG" を指定することにより、Mapping がフォーマットの条件を読み取って切り替えてくれます。
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-1
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-2
Mapping V7 で PDF を生成する MAPCPYSPLF コマンドの指定-3
青矢印で指定したパラメーターの値が正しく入力されていれば、MapDraw のマルチ・プレビュー画面で確認した結果と同じ PDF ファイルが生成されます。