始めの言葉

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

2019年3月24日日曜日

ROBOTを使った処理の自動化 - 6 - 印刷後の PDF ファイルの削除

前回まで、PDF ファイルの加工についてお話ししてきましたが、生成された PDF ファイルを MAPIFS2PRT コマンドを使用して印刷した後のことを考えてみます。
再印刷を考慮する必要がある場合には、PDF ファイルを PC 上で開いて開始ページを指定した上で、プリンター・ドライバーを使って印刷するという方法が考えられます。
その場合でも、その後、PDF ファイルをファイル・サーバーに転送するか削除して、AS/400 のハードディスクを圧迫しないようにする対策が必要になります。
ここでは、再印刷が必要な場合には、再度 PDF 生成から再開するため PDF ファイルを保存する必要がないケースを想定しています。そのため、印刷後はすぐに PDF ファイルを削除する処理を自動的に行うよう、ROBOT を設定します。

1. いつもの BAYTOP 書房の見積書のスプール (DEMO1 という固定名)が、DEMOOUT という OUTQ に解放されると、MVP という OUTQ に繋がったプリンターに印刷されるものとします。Mapping メニューの中の "4.入力/出力の出力待ち行列の関連定義" を次の画面のように定義します。
4.入力/出力の出力待ち行列の関連定義
2. "3.スプール・ファイルとアクション間の関連定義" を次のように定義します。ここでは、対象となるスプール・ファイルの名前が "DEMO1" で固定であることが前提としています。また、アクションの名前を "PRINTDEL" としました。
3.スプール・ファイルとアクション間の関連定義
3. "PRINTDEL" というアクションの定義を、"2.アクションの処理" で行います。先ずは、次のコマンドを定義して、PDF ファイルの生成を行います。ここでは、PDF ファイルのファイル名と保存先のフォルダー名が自動的に決まるように、次のように定義します。
- PDF ファイル名 : スプール・ファイル名 + スプール番号 (上書きを防ぐためにスプール番号を付けています。)
- フォルダー名 : 出力先のプリンターの OUTQ 名
具体的には、次のように定義しています。
MAPCPYSPLF SPLF(&SPLF) SPLNUM(&SPLNUM) JOB(&JOB) JOBNUM(&JOBNUM) USER(&USER) MAPNAM(BAYTOP) MAPSEQ(*MRG) TYPLAN(*XPS) XPSCONVERT('*PDF') XPSOUTFILE('/map34806/mapping/&OUTDES/&SPLF&SPLNUM.pdf') CP(1027)
アクションの定義 -1
4. この段階で、ROBOT を起動し、スプール・ファイル "DEMO1" を保留 -> 解放すると、次の画面のように、"DEMO1     1.pdf" という名前の PDF ファイルが "MVP" というフォルダーの下に生成されたことを確認できます。
フォルダー "MVP" に PDF ファイルが生成された
5. 次に、4. で生成された PDF ファイルを印刷するためのコマンドを、次のように、アクションに追加します。
MAPIFS2PRT FILE('/map34806/mapping/&OUTDES/&SPLF&SPLNUM.pdf') SPLF(&SPLF) OUTQ(&LIBDES/&OUTDES)
アクションの定義 -2
6. この段階で、ROBOT を起動し、スプール・ファイル "DEMO1" を保留 -> 解放すると、次の画面のように、"MVP" という OUTQ の中に "DEMO1" というスプール、すなわち印刷データが投入されたことを確認できます。
MVP という OUTQ に印刷データが投入された
7. 次に、生成された PDF ファイルを削除するコマンドを、アクションに追加します。
DEL OBJLNK('map34806/mapping/&OUTDES/&SPLF&SPLNUM.pdf')
アクションの定義 -3
8. ROBOT を起動し、スプール・ファイル "DEMO1" を保留 -> 解放すると、次の画面のように、"MVP" というフォルダーの中には PDF ファイルが残っていないことを確認できます。
PDF ファイルが削除されて、空になった MVP フォルダー




 

2019年3月16日土曜日

XPS 形式の中間ファイルを使った PDF の加工 第 5 回

今回は、ファイルの結合です。
(参考までに、PC の世界では、COPY コマンドを使用して複数のファイルを結合して 1 つのファイルを作成することが可能です。)
Mapping V7 では、PDF ファイルのまま結合することはできないのですが、XPS ファイルを結合して、最後に結合した XPS ファイルを PDF ファイルに変換することが可能です。
コマンドとしては、次のような指定方法になっています。
1. 3 つのファイルを 1 度に結合して、1 つの "fainal.xps" ファイルを生成する場合
map_xps -outfile:/tmp/final.xps -add:/tmp/test1.xps -add:/tmp/test2.xps –
add:/tmp/test3.xps
2. 結合する対象の XPS ファイルの数が分からない場合には、次のように何度かに分けて結合します。つまり、"final.xps" に対して、1 つずつ結合していくという考え方です。
map_xps -tempfile:/tmp/final.xps -add:/tmp/test1.xps
map_xps -tempfile:/tmp/final.xps -add:/tmp/test2.xps
map_xps -tempfile:/tmp/final.xps -add:/tmp/test3.xps

では、実際に結合してみましょう。
今までお馴染みの "BAYTOP.xps" ファイルに、Mapping のマニュアル (PDF ファイル) の1 ページから作った XPS ファイルを結合します。
1. PDF ファイルを "Acrobat Reader DC" で開いて、"ファイル"->"印刷" を選択します。印刷指定画面で、"プリンター" には "Microsoft XPS Document Writer" を指定します。
ページサイズ処理は "実際のサイズ" を選択して、更にここでは "印刷するページ" は、"現在のページ"(1ページ)を指定してから、"印刷" ボタンを押します。
Acrobat Reader の印刷指定ページ
次のような画面が表示されますので、"ファイルの種類" を "XPS ドキュメント" に変更してファイル名(英数文字で指定してください)を指定して "保存" ボタンを押します。
XPS ファイルとして保存する
2. 5250 端末画面で、"CALL MAP_XPS" と入力して、F4 キーを押します。
CALL MAP_XPS と入力して F4 キーを押します。
3. 画面のように、次の通りパラメーターを入力して実行キーを押します。
'-outfile:/map34806/mapping/test/Concatenate.xps' <- Concatenate.xps ファイルを作成します。
'-add:/map34806/mapping/test/BAYTOP.xps' <- BAYTOP.xps ファイルを元に結合します。
'-add:/map34806/mapping/test/XPSmanual.xps' <- PDF ファイルから作成した XPS ファイルを結合します。
CALL MAP_XPS とパラメーター
4. この結果、6 ページの "BAYTOP.xps" ファイルに対して、1 ページの "XPSmanual.xps" を結合して、7 ページの "Concatenate.xps" ファイルが生成されました。
5. 次にもう 1 回、MAP_XPS プログラムを使用して、"XPSmanual.xps" を "XPSmanual.pdf"ファイルに変換します。
XPS ファイルから PDF ファイルへの変換
6. 生成された PDF ファイルを Acrobat Reader で開くと、次のように最終ページがマニュアルの 1 ページとなった 7 ページの PDF ファイルが生成されたことが分かります。

7 ページ目にマニュアルの 1 ページが結合された PDF ファイル
この時、初めに PDF ファイルから生成された XPS ファイルで使用されているフォントは、そのフォント・ファイルが、IFS 上の "mapping" フォルダーの下にある "ttf" フォルダー内にあうことが必要です。
7. 試しに、結合する XPS ファイルの順序を逆にしてみましょう。
結合する XPS ファイルの順序を逆に指定する
8. 生成された "Concatenate2.xps" ファイルを更に PDF ファイルに変換した結果は、次のとおりです。予想通り、1 ページ目がマニュアルのページになっています。
1 ページ目がマニュアルとなった PDF ファイル

2019年3月10日日曜日

XPS 形式の中間ファイルを使った PDF の加工 第 4 回

今回は、PDF ファイルからの加工ではなく、XPS ファイルを PDF ファイル以外の形式に変換する 2 つの例をお話しします。
1 つ目は、DOCX 形式への変換です。変換のためのコマンドは、次の画面のように簡単なものです。
XPS ファイルを DOCX ファイルに変換する
ここでは、BAYTOP.xps ファイルを BAYTOP.docx に変換しています。変換された DOCXファイルを、Word を使って開いてみると、次のように表示されました。
DOCX ファイルを Word で開いた画面-1
DOCX ファイルを Word で開いた画面-2
下の画面でお分かりのように、バーコードや罫線も含めて、Word で正しく表示できる DOCX 形式のファイルに変換されたことが分かります。なお、変換元の BAYTOP.xps ファイルは、そのまま残っています。

2 つ目は、HTML 形式への変換です。コマンドは次の通りです。
XPS ファイルを HTML ファイルに変換する
 生成されたファイルをブラウザー(ここでは、FireFox を使っています。)で開くと、次のようになります。
HTML ファイルを FireFox で開いた画面-1
HTML ファイルを FireFox で開いた画面-2
文字やバーコードは正しく表示できていますが、罫線が表示できていない箇所が多いようです。これは、今後の改善に期待したいと思います。なお、画面上のイメージの要素が、JPG 形式のファイルとして、HTML ファイルと並んで生成されていることが、次のエクスプローラーの画面で分かります。
生成された HTML ファイルと JPG ファイル
イメージ・ファイルになっているのは、ロゴ、バーコード 、印影です。




2019年3月3日日曜日

XPS 形式の中間ファイルを使った PDF の加工 第 3 回

今回は、用紙サイズを変更する方法をお話しします。
用紙サイズは本来 MapDraw を使用して帳票設計を始める際に決めているものですが、ここでは、帳票設計時の用紙サイズ XPS ファイルを生成した後で、用紙サイズを変更します。
用紙サイズの変更に当たっては、map_xps に 3 種類の異なったパラメーターが用意されていて、それぞれの変更法は次のとおりです。
-paper:XXX <- 内容に変えずに、用紙(ページ)サイズのみを変更します。
-scale:XXX <- 用紙サイズを変えずに、ページの内容のサイズを変更します。
-changeformat:XXX <- 内容も含めて、用紙全体のサイズを変更します。(縦横の比率を維持します。つまり、通常の拡大縮小を行います。)

また、使用可能な用紙サイズの値は次のとおりです。: AUTO, EXECUTIVE, LETTER, LEGAL, LEDGER, A4, A3, A2, A1, A0, MONARCH, COM10, DL, CS, B5
規格外のサイズの指定も可能で、その方法は、次のとおりです。
-changeformat:xx.xx,xx.xx[,cm|in|mm]
- 2 つの小数は、幅と高さです。
- 小数の区切りは、‘.’ (ドット)です。
- 値同士の区切りは‘,’(カンマ) か ‘;’ (セミ・コロン)です。
- 単位はオプションです。: cm (デフォルト), mm または in(インチ)

1. 用紙サイズのみを変更します。
いつものベイトップ書房の見積書の xps ファイルに対して、次のように用紙サイズのみを "A3" サイズに変更します。
-paper:A3 を指定する
その結果、生成された xps ファイルを XPS ビューアーで開くと次のように、内容は A4 サイズのままで、A3 サイズに変わっていることが分かります。
生成された XPS ファイルの表示
2. 用紙サイズは変えずに、内容のみサイズを変更します。
用紙サイズは A4 のままで、内容のみ縦横それぞれ 50% 縮小します。指定方法は次のとおりです。
内容のみ縦横 50% 縮小の設定
その結果、生成された xps ファイルは、次のように、用紙サイズは A4 サイズのままで、内容が縦横 50% に縮小されていることが分かります。
内容のみを縦横 50% に縮小
3. 内容も含めて全体を A3 サイズに拡大します。
指定方法は、次のとおりです。
全体を A3 サイズに拡大
生成された XPS ファイルを XPS ビューアーで開いても、A3 サイズになったか分かり辛いので、次のように PDF ファイルに変換します。
PDF ファイルに変換
生成された PDF ファイルのプロパティを見ると、次の画面のように、"ページ・サイズ" が、297x420mm つまり A3 サイズとなっていることが確認できました。
A3=297x420mm サイズになっていることの確認

2019年2月24日日曜日

XPS 形式の中間ファイルを使った PDF の加工 第 2 回

今回は、ページの抽出を行います。前回のお話で生成した "BAYTOP.xps" ファイルを PDF 形式に変換する際に、ページの抽出を行います。
コマンドの基本的な指定方法は、次のとおりです。
map_xps -infile:/tmp/sample.xps -outfile:/tmp/sample.pdf -pages:1,3,4,7,10 –toPDF
ここで使用する "BAYTOP.xps" ファイルは、全部で 6 ページなので、1 ページ目と 3 ページ目を抽出して、全部で 2 ページの PDF ファイルを生成してみましょう。
1. MAP_XPS はプログラムなので、CALL MAP_XPS と入力して F4 キーを押します。
CALL MAP_XPS と入力して F4 キーを押します。
2. 表示された画面で、次のパラメーターを指定します。
-infile:/map34806/mapping/test/BAYTOP.xps <- 手順 "1" で生成した XPSファイル
-outfile:/map34806/mapping/test/BAYTOP13.pdf <- 生成する PDF ファイル
-pages:1,3 <- 1 ページと 3 ページを指定
-toPDF <- PDF 形式に変換することの指定
MAP_XPS 指定画面
3. 生成された PDF ファイルをAcrobat Reader で表示すると、次のようになります。
生成された PDF ファイルの 1 ページ目
生成された PDF ファイルの 2 ページ目
抽出するページの指定方法は、次のように数通りあります。
-pages:3-10 <- 3 ページ目から 10 ページ目までを範囲指定する
-pages:1,5,10-* <- 10 ページ目以降最終ページまでを指定する
-pages:FILE:/tmp/test.txt <- ページを指定したテキスト・ファイルを使って指定する

4. そこで、ここでは、次のような内容のテキスト・ファイルを指定してみます。
1,3,6 ページを指定するテキスト・ファイル
このテキスト・ファイルは、IFS 上に保存するのですが、注意する点は、数字 + 改行で構成することです。従って、この例では "6" の後で改行しています。
5. 次の画面のように、ページ範囲をテキスト・ファイルで指定します。
テキスト・ファイルを使用したページ指定
6. 生成された PDF ファイルは、次のように 3 ページの構成となっています。
生成された 3 ページの PDF ファイル

2019年2月9日土曜日

XPS 形式の中間ファイルを使った PDF の加工 第 1 回

Mapping Suite V7 の大きな特徴の一つは、中間ファイルとしてマイクロソフト社が進めている XPS ファイルを使用することなのですが、実際にそのメリットを認識できる機会が少ないと思います。これから何回かのお話では、その例をご紹介したいと思います。
1 回目は回転した状態で PDF ファイルを生成する方法です。回転角として指定できるのは、90 度、180 度、270 度の 3 種類です。通常、PDF ファイルを回転する必要はないと思いますし、まして回転すると画面上では非常に見づらいものとなっていまいます。ただ、PDF ファイルをプリンター(ラベル・プリンターも含む)に印刷する際に、用紙のセット方向との関係で、180 度回転する必要が出てくるケースがあるようです。

基本的な流れは、次のとおりです。
1. MAPCPYSPLF コマンドを使用して、XPS ファイルを生成します。
2. MAP_XPS プログラム、若しくは MAPXPS コマンドを使用して、PDF ファイルに変換しますが、その時にパラメーターを追加して 180 度回転を指定します。なお、180 度回転のパラメーターは、前者では直接指定しますが、後者では XPSConfig.conf ファイルの中で指定します。

では、具体的な手順は次のとおりです。
1. MAPCPYSPLF コマンドを使用して、XPS ファイルを生成します。
MAPCPYSPLF コマンド 1 画面目

MAPCPYSPLF コマンド 2 画面目
生成された XPS ファイルを XPS ビューアーで開いた画面
2. MAP_XPS プログラムを使用して PDF ファイルに変換しましょう。MAP_XPS はプログラムなので、CALL MAP_XPS と入力して F4 キーを押します。
CALL MAP_XPS と入力して F4 キーを押します。
 3. 表示された画面で、次のパラメーターを指定します。
-infile:/map33099/mapping/test/BAYTOP.xps <- 手順 "1" で生成した XPSファイル
-outfile:/map33099/mapping/test/TOPBAY.pdf <- 生成する PDF ファイル
-rotation:180 <- 180 度回転指定
-toPDF <- PDF 形式に変換することの指定                                   
MAP_XPS 指定画面
4. 生成された PDF ファイルをAcrobat Reader で表示すると、次のようになります。ページのイメージは上下反転しますが、ページ順は変わりません。
PDF ファイルの1ページ目
5. MAPXPS コマンドを使用する場合には、先ず次の 3 行を XPSConfig.conf ファイルの中に追加します。
<rotation>
<pagerotation>180</pagerotation>
</rotation>
6. MAPXPS と入力して F4 キーを押します。
MAPXPS と入力して F4 キーを押します。
7. 表示された画面で、次のように指定します。
Input file xps . . . . . . . . . > '/map33099/mapping/test/BAYTOP.xps'
Output file  . . . . . . . . . . > '/map33099/mapping/test/TOPBAY2.pdf'
Printer language . . . . . . . . > *PDF <-PDF 形式に変換することの指定
MAPXPS コマンド 1 画面目
Profile Name . . . . . . . . . . > rotation <- XPSConfig.conf ファイルの中の回転の指定名
MAPXPS コマンド 2 画面目
8. 実行キーを押すと、"4" と同じ PDF ファイルが生成されます。
CALL MAP_XPS と MAPXPS コマンドでは、回転の指定が、前者は -rotation:180 であるのに対して、後者では <pagerotation>180</pagerotation>というように異なる点に注意が必要です。

2019年2月3日日曜日

XPSConfig ファイルを使った PDF セキュリティ - その他の制御 -

前回のお話で生成した PDF ファイルにはパスワードの設定の他にも
<encryptallowprint>off</encryptallowprint>
という設定によって、印刷の禁止が設定されています。
では、実際に印刷しようとするとどうなるかを見てみましょう。前回の "BAYTOPPW.pdf" を Acrobat Reader 使って開こうとすると、パスワードを要求されますので、所有者パスワードか使用者パスワードを入力します。表示された画面は次の通りです。

BAYTOPPW.pdf を Acrobat Reader で開いた画面
画面左上のファイル名が、BAYTOPPW.pdf(保護) となっているのが、お分かりいただけると思います。XPSConfig.conf ファイルの中の次の設定が効いているわけです。
<encryptmode>on</encryptmode>

次に印刷するために、メニューの中のファイルを選択すると、次のように "印刷" メニューが無効になっていることがお分かりになると思います。
印刷メニューが無効になっている
このようにして、PDF ファイルを受信してパスワードを使って開いたユーザーも、表示はできますが、印刷して配布したりコピーを取ったりすることができないというセキュリティー管理ができるわけです。
通常はそこまでの細かな管理は行わないと思いますが、パスワードと同様に、スプール・データの中の表示に使用しない場所に、"on" とか "off" を入れておいて、それを例えば、"ALWPRINT" いう別の名前のアーカイブ・ゾーンとして帳票設計しておけば、次のような XPSConfig.cnf ファイルの指定によって、スプール・データ内の指定に応じて、印刷を許可するかどうかを自動的に決められます。
<encryptallowprint>[[ALWPRINT]]</encryptallowprint>

次に、印刷の他に、この XPSConfig.conf の中では、次の設定を "on" としています。
<encryptallowdataextraction>on</encryptallowdataextraction>
生成された "BAYTOPPW.pdf" のファイルのプロパティを見ると、次のように "内容のコピー" と "アクセシビリティのための内容の抽出" が "許可" に変わりました。
dataextraction=on によるセキュリティの許可
この時の "詳細" は次のようになっています。
セキュリティの詳細

ここで、XPSConfig.conf の中で
<encryptallowdataextraction>off</encryptallowdataextraction>
に戻して、
<encryptallowaccessibility>on</encryptallowaccessibility>
とします。その場合は、"アクセシビリティのための内容の抽出" のみが "許可" となります。
encryptallowaccessibility=on によるセキュリティの許可
なお、この設定は読み上げソフトを使用可能とする設定です。詳細画面は次のようになっています。
セキュリティの詳細画面


次に、XPSConfig.conf ファイルの中の次の設定を "on" に変更して、PDF ファイルを生成します。
<encryptallowmodify>on</encryptallowmodify>
PDF ファイルのプロパティを開くと、次の 3 項目が "許可" に変わっていることが分かります。
- フォームフィールドの入力
- 署名
- テンプレートページの作成
encryptallowmodify=on によるセキュリティの許可
この時のセキュリティの詳細画面では、次の 2 項目が許可に変わっています。
- 文書の変更
- 文書アセンブリ
セキュリティの詳細画面


更に、次の設定を、"on" に変更して、PDF ファイルを生成します。
<encryptallowcomment>on</encryptallowcomment>
その結果、"注釈" が許可されました。
encryptallowcomment=on によるセキュリティの許可
この時の詳細画面も同じ内容です。
セキュリティの詳細画面