見出し画像

GASでPDFを操作するあれこれ

GASでPDF生成は昔から利用されてきた鉄板のテクニックですが、V8エンジン搭載後はさらに色々なことが出来るようになりました。それらPDF生成や操作を色々まとめてみました。

ここに掲載されてるもの以外でもまだまだ色々出来るので、自分のアプリに装備していきたい機能です。


普通にPDFを生成する方法

GASからは通常使えなかったスプレッドシートの機能としてのPDFエクスポートをUrlfetchAppを利用してPDF化という最もよく利用されてるテクニックです。getAsで出力という簡単な手法が標準装備ですが、これはオプション指定が一切出来ません。

しかしこれ2種類ありまして、通常の古いGETリクエストでPDF化する手法と、ロシアの人が見つけた新タイプのPOSTリクエストでPDF化する方法があります。

前者は古い手段で利用できるオプションが少ないですが、後者のPOSTで送信する方法はコードが面倒ですが、ページ指定や改ページなど実際にブラウザ操作でPDF出力する時に指定できるオプションのほぼ全てが網羅されています。

PDFを結合する方法

V8エンジン搭載後のGASはES6のメソッドが利用出来るようになった為、通常のJSライブラリであるPDFLibなどが使えるようになりました。
結果として、PDFの結合や分割なども出来るようになりました。以下は結合にフォーカスをした記事になります。

複数のPDFをひとまとめにして1個のPDFにしてくれます。

PDFフォームを操作する方法

いわゆる入力できるPDFがPDFフォーム。なんですが、これに指定のボックスに文字を入力したり、逆に入力されてる値を回収してスプレッドシートに集計したり。手動ではとても大変です。

ということで、これもPDFLibを使って行わせることが可能です。但し入力についてはFontkitも別途必要なので注意。

差込印刷でPDFを連続生成する方法

GAS単体でgetAsにてPDFを生成する事ができますが、これだけでは物足りない。DocumentにSpreadsheetのデータを差し込みして一括でPDFを生成する手段を確立しました。

標準で装備していない機能なのでこれは利用するシーンが多数あるのではないかと思います。

パスワードPDFを作成する

GAS単体ではいわゆるパスワードPDFは生成出来ません。しかし、GCPにあるCloud Storage + Cloud FunctionsにてNode.jsのモジュールを使うことで、GASを入口にしてパスワードPDFを生成することが可能です。

ちょっとハードルが高いですが、利用する機会も結構あると思うので、以下のエントリーを参考にGCPとの連携を装備すると良いでしょう。

#PDF #GAS #JavaScript #PDFLib

この記事が気に入ったらサポートをしてみませんか?