LoginSignup
30
48

More than 3 years have passed since last update.

JavascriptでPDFを作成する

Last updated at Posted at 2019-09-18

javascriptでPDFを出力する

利用ツール

pdfMake

手順

①pdfMakeをダウンロードしてくる

https://github.com/bpampuch/pdfmake
※上記からcloneしてきても、zipでダウンロードしてきてもOK

②日本語化フォントを取得

https://github.com/naoa/pdfmake
から日本語化フォント取得

日本語化フォントのある場所は、buildフォルダ内にあります。

naoa様が日本語化のフォントを作成してくださっています。
http://blog.createfield.com/entry/2015/12/16/052221
ipagp.tff等のフォントを利用して作成してもいいのですが、個人的には
naoa様が作成しているフォントセットを利用することをお勧めします。

ipagp.tffなどのフォントセットは、フルで日本語フォントが入っているため、
容量も5MBとかなり大きいものとなっています。
クライアントサイドで何度も読み出すことを考えると、ちょっと重いなーと。。。

naoa様のフォントセットは、あまり利用回数が多くないものを除外し、2M強までシェイプアップしてくれています。
クライアント側で動かすことを考えるとかなり嬉しいシェイプアップ。
利用して、対応できなければフルのフォントセットを利用する。ぐらいでいいのではないでしょうか?

追記
上記のフォントセットを利用させて頂きましたが、要件で、日本語フォントの数字(1 2)などが文字化けしてしまう問題を受けて、
フルフォントセットを利用する方法を自社のエンジニアが記載してくれました。
pdfmakeの日本語対応

③JSのソースにフォルダを作成

今回はこんな感じの構成にしました。

PJフォルダ
 └── js
  └──pdfMake
   └──pdfmake.min.js
   └──vfs_fonts.js

 └─sample.html
     ※ここにnaoa様のvfs_font.jsを置く

④pdfMakeを読み込み

sample.html

      <!-- OutPutPDF -->
      <script src="./js/pdfmake/pdfmake.min.js"></script>
      <script src="./js/pdfmake/vfs_fonts.js"></script>

⑤PDF出力処理を記載

sample.html
      <script>
          //日本語フォント読み込み
          pdfMake.fonts = {
            GenShin: {
            normal: 'GenShinGothic-Normal-Sub.ttf',
            bold: 'GenShinGothic-Normal-Sub.ttf',
            italics: 'GenShinGothic-Normal-Sub.ttf',
            bolditalics: 'GenShinGothic-Normal-Sub.ttf'
            }
          };
          //PDF作成処理
          var docDef = {
            content:[
              {text: "Hellow World", fontSize: 20}
            ],
            defaultStyle: {
              font: 'GenShin',
            },
          };
          pdfMake.createPdf(docDef).download("出力テスト.pdf");

      </script>

最後に

手軽に導入できるので、
利用してみればいいかもです。

30
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
48