2009-11-02

FileMaker Pro 5/5.5/6 でファイル名を指定して PDF 形式で印刷を実行する方法

 FileMaker Pro 7 以降では、「レコードの保存/送信」を使うことによってレコードを PDF 形式で保存できるようになっていますが、それより前のバージョンでは別途 PDF ドライバを入手して印刷コマンドから PDF 保存をする必要があります。

 今回は、FileMaker Pro 5/5.5/6 を使って PDF 形式ファイルを自動作成し、そのファイルに独自の名前を付ける方法について説明します。

【用意するもの】
1. PDF ドライバ
 プリンタドライバと同様、PDF ドライバと FileMaker Pro の相性が合わないことも考えられますので、デモ版や無料版が利用可能であれば、それを利用することをお勧めします。

 実験で FileMaker との相性がいまいち合わなかったドライバ
 Primo PDF --- 自動化の際にユーザダイアログが必ず表示されてしまうので、連続実行には不向き。
 瞬簡PDF3 --- 処理の連続実行、大量処理時に FileMaker Pro がクラッシュする。

 当方のテストで比較的安定したパフォーマンスを記録したのは、PDFCreator だったので、今回は PDFCreator を使います。
PDF Creator の詳細とダウンロードはこちら

 ただし、FileMaker 側でループによるバッチ処理で PDF 作成を行うと、サイズの比較的大きいファイルを処理中に次のループが回ってしまうという現象が起こり、それによってデータの一部が欠けた PDF ファイルが作成されてしまうことがあります。
 FileMaker 側でループ待ち時間を調整することでこういったデータ欠損のあるファイルが発生することを回避することはある程度できますが、それでも FileMaker Pro とプログラム連携をさせる時点で 100% 安定したパフォーマンスが得られるわけではないことは念頭に入れておくと良いでしょう。

2. PetaExecute プラグイン
 MS-DOS コマンドを実行したときの戻り値をこのプラグインで取得します。
 PetaExecute の情報およびダウンロードはこちら

【操作手順】
1. PDFCreator をインストールし、Options 画面の Auto-save 画面で次のように設定を行います。



1) [Use Auto-save]にチェックを付けます。
2) [Filename]に任意の一時ファイル名を英字で入力します。この名前は FileMaker 側でも同じものを指定する必要がありますので、分かりやすいものがよいでしょう。
3) [Use this directory for auto-save]にチェックを付け、その下のボックスにファイルの保存先を指定します。この保存先のパス名も FileMaker 側で指定する必要があります。

2. PetaExecute プラグインを FileMaker Pro のインストールディレクトリ配下の System フォルダにコピーし、FileMaker Pro を起動してこのプラグインが有効になっていることを確認します。


 処理の流れはざっとこんな感じです。
1) 印刷実行。
2) 1) で PDF ドライバを選択した場合は、一時ファイルを所定の名前に変更(この例では PDF_本日の年月日.pdf)。

 特に留意していただきたいのは、一時ファイルが作成されるのに多少の時間がかかるため、一時ファイルがディスクに書き込まれていない段階でファイル名変更コマンド(ren コマンド)が実行されるとファイル名変更が失敗する可能性があります。
 このため、一時ファイルが作成されるまで、ファイルメーカー内で待ち時間ループを設ける必要があります。

 本操作を確認、実行するためのファイル群を用意しましたので、興味のある方はここからダウンロードしてお試しください。
PDFサンプル

【MS-DOS コマンドによる実行方法】
 PetaExecute と MS-DOS コマンドの組み合わせにより、PDF ファイルを任意の名前で変更します。
 当方で動作検証を行った結果、大量バッチ処理で安定した運用が可能であることを確認したため、基本的にはこちらの方法をお勧めします。

1. サンプルファイル PDFtest.fp5 を開き、FileMaker 環境設定のプラグインで PetaExecute にチェックが付いていることを確認します。

2. PDFCreator の一時ファイル名とファイルの保存先を FileMaker 側にも指定します。
(画面下部の[VBSファイルパス]はここでは使いません。)


3. “日記へ”ボタンをクリックして日記内容を入力し、“印刷”ボタンを押し、プリンタとして PDFCreator ドライバを選択して印刷します。
4. 1. で指定したファイルの保存先ディレクトリに PDF ファイルが作成されていれば成功です。

 このスクリプトの仕組みは、スクリプトメニューより「日記印刷_DOS」を開いて参照してください。

【VBScript による実行方法】
 前述の MS-DOS コマンドによる実行方法と比べるとバッチ処理の安定性が低下する可能性がありますが、VBScript の方が MS-DOS コマンドより細やかなファイル操作が可能ですので、ファイルシステムの詳細設定を兼ねながらファイル操作を行いたい場合にはこちらの方法が適していると言えます。
 今回のサンプルスクリプトでは、実行結果が MS-DOS コマンドによる方法と同様になるように VBScript を組んであります。ただ一箇所異なる点は、既存ファイルのバックアップ機能が用意されている点です。

1. サンプルファイル PDFtest.fp5 を開き、FileMaker 環境設定のプラグインで Local Data Access コンパニオンと PetaExecute にチェックが付いていることを確認します。
(VBScript でエラーが発生した場合に、FileMaker にエラーを返すために Local Data Access コンパニオンを有効にしておく必要があります。)

2. PDFCreator の一時ファイル名とファイルの保存先を FileMaker 側にも指定します。
[VBSファイルパス]には、今回の記事で配布しているサンプルアーカイブに用意されている PDFrename.vbs ファイルを格納するディレクトリを指定します。


3. “日記へ”ボタンをクリックして日記内容を入力し、“印刷VBS”ボタンを押し、プリンタとして PDFCreator ドライバを選択して印刷します。
4. 1. で指定したファイルの保存先ディレクトリに PDF ファイルが作成されていれば成功です

 このスクリプトの仕組みは、スクリプトメニューより「日記印刷_VBS」を開いて参照してください。

0 件のコメント: