日本語の帳票を出力することができるようにはなりましたが、pdfmakeの中身がまったくのブラックボックスだと不安ですし、何かあった時に対処できませんので、どうやってjavaScriptでPDFを作成しているのか、さぐってみました。
でも、深追いはしないです(^^;

PDFのフォーマットはAdobeから公開されています。
http://www.adobe.com/jp/devnet/pdf/pdf_reference.html

こういった書籍も出ています。


ので、PDF作成部分はおいときます。

出来上がったPDFデータをどうやって表示してるのか、調べた所「Data URL scheme」を使っているようです。
Data URL schemeは、外部データ無しにウェブページにデータを埋め込むための仕組みだそうです。
たとえば、下記の画像を埋め込むならば、
circle
まず画像データをBase64に変換します。
Base64は、バイナリデータを一定の規則に基づいてテキストデータに置き換える変換方法の1つだそうで、JavaScriptだと encode = new Buffer(src).toString(‘base64’); で変換できます。
上記赤丸を変換すると以下になりました。

データの頭に「data:image/png;base64,」を付けて<img>のsrcにセットすると埋め込まれます。

実際にやってみると

表示されました。

このsrcにセットした値をそのままブラウザのURLに入力すると、赤丸が表示されます。
00000974

同じようにPDFデータをbase64に変換してみます。
データは最初のテストで使った「This is an sample PDF printed with pdfMake」と表示されるやつです。変換結果は以下です。

埋め込みはPDFですから<object>のdataにセットします。

このブログ内に埋め込んでの表示を試してみましたが、ブログのエディタがコードを勝手に自動変換してしまって表示されませんでした。

ブラウザのURLに入力すると、無事開きました。
00000975

javaScriptからだと、
var win = window.open(”, ‘_blank’);
win.location.href = ‘base64のデータも文字列。’;
で同じように開きます。

ブラウザがIEだと開くことができなかったのは、IEのData URL schemeは画像データにしか対応していないからみたいです。

あと、以前からブラウザのタグが文字化けのようになっているのが気になってました。
h28092301
通常此処にはHTMLの<title>の内容が表示されますが、HTMLデータでは無いのでbase64のテキストデータの一部が表示されていたようです。
これを解消するには、表示用のHTMLページを作って、そのページに<object>でデータを埋め込むようにすればなんとかなりそうです。

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