ヘッドレスブラウザ と FileMaker を連動させて PDFを作成する

FileMaker で PDF出力

現在の FileMaker 17では FileMaker Go でも WebDirect そのすべての実行環境において、
印刷の代わりにPDFファイルを作成することができます。

Webページを FileMaker で PDF出力

ホームページやHTMLで作成されたデータは、Webビューアを使えば簡単に表示することができます。
しかし複数ページにまたがるホームページやHTMLデータでは、
PDFのサイズやその文字量によって、
ページとページの分かれ目がどこになるかわからないので、
複数ページのPDF出力を汎用的に実行するのはとても難しいものです。

FileMaker と ヘッドレスブラウザ と PDF出力

ヘッドレスブラウザとは、Chrome と Firefox が機能としてもっている実行モードです。
コマンドラインからページ読み込み、Content取得、PDF出力、デバックが可能です。
https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja
FileMaker からは「Eventを送信」スクリプトステップでコマンドラインを実行し、
結果の取得は「ファイルを挿入」ステップステップを使えば連動させることができます。

実行してみる

バージョン59以上の Chrome をインストールしましょう。特別なものではありません。

次にFileMaker Proで実行する前にコマンドラインで実行してみましょう。
Windowsはコマンドプロンプトです。

(Macならターミナルです。Macはアプリケーションフォルダーにある Google Chrome.app ではなく、右クリック ー パッケージの内容を表示 のその中の中にある実行ファイルを指定する必要があります。
Eventを送信(MacOS)からターミナルコマンドを実行する方法がわからん・・;;)

最後にFileMaker のスクリプトに反映させましょう。
「Eventを送信」スクリプトステップの計算式に次のように設定します。

ポイントは、
–から始まるChrome.exeのオプションはスペースで区切られているので、
・cmd.exe /c の直後から最後までをダブルコーテーションで囲む
・文字列内にダブルコーテーションを入れる場合はエスケープ文字として¥(半角)マークを付加する

用紙やヘッダなどの印刷設定について

ヘッドレスモードのオプションはそんなに多くはないようです。
https://cs.chromium.org/chromium/src/headless/app/headless_shell_switches.cc
用紙やヘッダなどの印刷設定はWebページにCSSで指定するしかないようです。
確認したらちゃんと動作しました。
https://qiita.com/cognitom/items/d39d5f19054c8c8fd592

PDFの作成だけでなく、JavaScript実行後のContentを取得することもできる

cURLでWebコンテンツを取得すると、
PHPなどのサーバーサイドスクリプトの結果であるContentが取得できますが、
JavaScriptなどのクライアントサイドスクリプトは、そのJavaScriptコードが取得できるだけです。
そこで本投稿の –print-to-pdf ではなく –dump-dom オプションにすることにより、
JavaScript実行後のContentを取得することもできます。

 

 

 

【 開発者募集中 】
弊社では FileMaker を使った高度な技術力で、モバイルデバイスのビジネス利用を楽しく発展させていく仲間を随時募集しています。詳しくは採用ページをご覧ください。