Webアプリで帳票をPDFで作成するのはよくある話で、FPDFライブラリを使ってサーバー側のPHPで作成したりします。

が、今回CDに焼いて配布するHTML文書で帳票をPDFにしたいという話が舞い込んできました。
サーバーには繋がずクライアント側だけで処理する必要があるので、JavaScriptで出来ないかなと調べた所、以下の4つが見つかりました。

「Bytescout PDF Generation SDK for Javascript」は商用利用は有料だそうで、候補からはずしました。
「PDFKit」は、Node.jsをインストールしないと使えなさそうなのでパス。

残った「jsPDF」と「pdfmake」、どちらも使えそうだと思ったのですが、どうやら素のままでは日本語が表示できないようです。

何とかならないかと探したところ、「jsPDF」で、canvasに書いて、imgとしてPDFに取り込むという方法で日本語を表示しているサイトがありました。
http://devlog.mitsugeek.net/entry/2014/08/21/javascript%E3%81%A7PDF%E5%87%BA%E5%8A%9B%EF%BC%88%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A1%A8%E7%A4%BA%EF%BC%89

ただ、このやり方だと解像度が悪くなるしPDFを使っている意味が・・。

さらに探したところ、「pdfmake」に日本語フォントを導入している方を見つけました。
http://blog.createfield.com/entry/2015/12/16/052221
「源真ゴシック」のttfファイルをpdfmakeでjsに変換してるそうです。
ただ、このフォント、通信負荷を減らす為に、あまり使われない漢字等を省いて2.2Mのサブセット化してあるので、全角記号や特殊な文字は表示されません。
あと、「源真ゴシック」なので当然ですが、明朝体は出ません。

でも、最低限の日本語は出ますので、「pdfmake」でやってみようと思います。

今回は、CD配布で通信が無いので、フォントファイルの容量が大きくなっても問題はありません。
ので、このサイトに書かれている情報を元に、フルセットのフォントと明朝体のフォント、あとそれぞれのbold(太字)フォントを持たすことにチャレンジはしようと思っています。

次回は、pdfmakeをダウンロードして、PDFが出力できるのを確認したいと思います。

クライアントのJavaScriptだけでPDF作成(1)
クライアントのJavaScriptだけでPDF作成(2)
クライアントのJavaScriptだけでPDF作成(3)
クライアントのJavaScriptだけでPDF作成(4-日本語表示)
クライアントのJavaScriptだけでPDF作成(5-フォント作成)
クライアントのJavaScriptだけでPDF作成(6-日本語フォントテスト)
クライアントのJavaScriptだけでPDF作成(7-日本語帳票)
クライアントのJavaScriptだけでPDF作成(8-どうやってるのか)