FileMaker のオブジェクトフィールドの PDF を印刷したい。 ( Windows )
Claris FileMaker のオブジェクトフィールドは、PDF とか画像とかのファイルを格納できる強力な機能の一つと思っております。
Windows でオブジェクトフィールドに格納している PDF を印刷したい場合、[Event を送信] スクリプトステップで [ファイルを印刷] を利用して印刷する事ができます。
今回は Windows で [Event を送信] スクリプトステップでハマったので、未来の自分のために備忘録として残すこととします。
[Event を送信] スクリプトステップではファイル / 計算 / テキストの三つのどれかを選ぶことになり、ファイルを選択するか、計算を選択するかで指定の仕方が若干異なります。
スクリプト1
# PDF印刷
# $path に "file:" や "filewin:" をつけない場合。
変数を設定 [ $filename ; 値: GetContainerAttribute ( table::field; "filename" ) ]
変数を設定 [ $path ; 値: Get ( テンポラリパス ) & $filename ]
フィールド内容のエクスポート [ table::field ; 「$path」 ; フォルダを作成: オン ]
Event を送信 [ 「aevt」 ; 「pdoc」 ; $path ]
# ファイルに $path を指定しないとエラーになる。
現在のスクリプト終了 [ テキスト結果: True ]
スクリプト2
# PDF印刷
# $path に "filewin:" をつけた場合。
変数を設定 [ $filename ; 値: GetContainerAttribute ( table::field; "filename" ) ]
変数を設定 [ $path ; 値: "filewin:" & Get ( テンポラリパス ) & $filename ]
フィールド内容のエクスポート [ table::field ; 「$path」 ; フォルダを作成: オン ]
Event を送信 [ 「aevt」 ; 「pdoc」 ; $path ]
# ファイルに $path を指定しないとエラーになる。
現在のスクリプト終了 [ テキスト結果: True ]
スクリプト3
# PDF印刷
# $path に "file:" をつけた場合。
変数を設定 [ $filename ; 値: GetContainerAttribute ( table::field; "filename" ) ]
変数を設定 [ $path ; 値: "file:" & Get ( テンポラリパス ) & $filename ]
フィールド内容のエクスポート [ table::field ; 「$path」 ; フォルダを作成: オン ]
Event を送信 [ 「aevt」 ; 「pdoc」 ; $path ]
# 計算 / ファイル どちらに $path を指定しても OK
現在のスクリプト終了 [ テキスト結果: True ]
ファイルを選択した場合、$path に Get ( テンポラリパス ) & "filename.pdf" を設定するといったように "file:" を追加しなくてもよい。
計算を選択した場合、$path に "file:" & Get ( テンポラリパス ) & "filename.pdf" を設定するといったように "file:" を追加しないとエラーとなる。
また、"filewin:" を指定した場合、エラーとなる。
いろいろややこしいので、「ファイル」を選択しよう、と決心した夜なのでした。
でも、、、多分私が実装する場合は ( 状況にもよるけど )、オブジェクトフィールドをエクスポートして、[ファイルを自動的に開く]にチェックするだけにしておくかなぁ。
開いた後に、ユーザ自身に印刷してもらう流れ。
これなら macOS でも Windows でも iOS でも使えるから。
追記
同様の情報はコミュニティにもありました!
この記事が気に入ったらサポートをしてみませんか?