趣味のプログラム工房

2024年09月

サーバでPDF出力 仮想プリンタ

利用者が印刷をしたらサーバ側でPDFで保存されるような仕組みを作りたい!
多分、複合機とかなら複合機に対して印刷かけたら、複合機内でPDFを保存するような仕組みがあると思うんですが、同じような感じで、
サーバをプリンタサーバにして、印刷かけるとサーバ内にPDF保存できないかなぁと。

で、できました。一応個人利用は無償。
CubeVP+Cube.Pdf.Ghostsciptを使った自作プログラムで実現しました。
サンプルとして公開されている、CubePDFLiteでも近いことはできますが、こちらは、出力先がユーザフォルダ固定になっておりサーバとしては使いにくいので、自作プログラムを準備。

Cube.Pdf.Ghostscipt
https://clown.cube-soft.jp/entry/cubevp/sdk/ghostscript
自作プログラムはほぼ、このソースを丸パクリ。
引数(PSファイルのパスやドキュメント名)をsrc、destにマッピングしているだけ。(トータル20行未満のプログラム)


CubeVPは仮想プリンタを作成するプログラムです。
各種アプリからこの仮想プリンタを指定して印刷すると、PostScriptの印刷データを作成してくれます。
これを、「Cube.Pdf.Ghostsciptを使った自作プログラム」に喰わせて、PDFへ変換しています。
自作プログラムといてっても、PSからPDFへの変換はライブラリがやってくれるので、CubeVPからPSファイルのパスを引数でもらって、出力先のパスやら各種パラメータを設定して、変換ライブラリへ渡すだけ。

なお、PostScriptからPDFへの返還には、GhostsciptというAGPLライセンスのライブラリが使われているのでちょっと気を付ける必要があります。

あとは、この仮想プリンタを共有して、クライアントでこのプリンタで印刷してあげれば、サーバ内に自動的にPDFが作成される仕組みです。

意外と使えそう!

2024年09月07日