6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

react + pdfmakeでかんたん日本語PDF出力

Last updated at Posted at 2019-06-03

#はじめに
reactでpdfを出力したいので、pdfmakeの利用を考えたんだけど、参考URLを見ると日本語出力が面倒そう…。

と、思ったら意外と簡単にできたのでメモ。ttfファイルさえあればいくらでもフォントが追加出来ます。

#参考
クライアントサイドでpdfを生成できるpdfmake.jsをreactで使ってみた
クライアントサイド(React)で日本語PDFを出力する。

#準備
create-react-app でプロジェクトを作り、pdfmakeパッケージを追加します

create-react-app testApp
cd testApp
yarn add pdfmake

pdfmakeのモジュールディレクトリに移動して、作業ディレクトリ exsamples/fonts に日本語フォントを設置します。今回は源様明朝を使わせて頂きました。

cd node_modules/pdfmake
mkdir -p examples/fonts
cp /path/to/fonts/*.ttf examples/fonts/

フォントをコンパイルするのにgulpを使います。.事前に yarn global add gulp等でインストールしておいてください。そのままpdfmakeのディレクトリ内で

yarn install
gulp buildFonts

これで日本語フォントのインストールが終わりました。buildFontsはもともとインストールされていたフォントを消してしまうので注意して下さい。

#実装

index.js
import React, { Component } from 'react';
import pdfMake from 'pdfmake';
import pdfFonts from 'pdfmake/build/vfs_fonts';

pdfMake.vfs = pdfFonts.pdfMake.vfs;
class App extends Component {
  download = () => {
    pdfMake.fonts = {
      GenYoMin: {
        normal: 'GenYoMinJP-Regular.ttf',
        bold: 'GenYoMinJP-Bold.ttf',
      },
    };
    const docDefinition = {
      content: [`テスト出力`],
      defaultStyle: {
        font: 'GenYoMin',
      },
    };

    pdfMake.createPdf(docDefinition).download();
  };
  render() {
    return (
      <button onclick={()=>this.download}>ダウンロード</button>
    }
  }
}

#結局
pdfmakeでは既存のPDFファイルの編集が出来ないので、お蔵入り。

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?