LoginSignup
1

日本語を含む OpenAPI ドキュメントをPDF出力したかった

Posted at

表記の件やった際の覚書。

PDFジェネレータ

  • RapiPdfを使用
      しばらく更新されてないけど、まぁそんな変わるもんでもないのでヨシ。

準備

# とりあえずインストールして
yarn install 
yarn build

# packageでpdfmakeが入るのでフォント追加の準備
cd ./node_modules/pdfmake
mkdir -p examples/fonts

# フォント定義ファイル(vfs_fonts.js)生成
node build-vfs.js "./examples/fonts"

# 移動
cd {RapiPdfのルート}

# 生成したフォント定義ファイルをコピー
cp ./node_modules/pdfmake/vfs_fonts.js ./src/

# ソースを少々変更
vi ./src/pdf-gen.js

# --- 差分 ---
L.41 -    mono: { font: 'RobotoMono', fontSize: 10 },
L.42 -    monoSub: { font: 'RobotoMono', fontSize: 8 },
L.41 +    mono: { font: 'IPAPGothic', fontSize: 10 },
L.42 +    monoSub: { font: 'IPAPGothic', fontSize: 8 },

L.96    pdfMake.fonts = {
-    Roboto: {
-      normal: 'Roboto-Regular.ttf',
-      bold: 'Roboto-Medium.ttf',
-      italics: 'Roboto-Italic.ttf',
-      bolditalics: 'Roboto-Medium.ttf',
-    },
-    RobotoMono: {
-      normal: 'RobotoMono-Regular.ttf',
-      bold: 'RobotoMono-Regular.ttf',
-      italics: 'RobotoMono-Regular.ttf',
-      bolditalics: 'RobotoMono-Regular.ttf',
+    IPAPGothic: {
+      normal: 'ipagp.ttf',
+      bold: 'ipagp.ttf',
+      italics: 'ipagp.ttf',
+      bolditalics: 'ipagp.ttf',
     },

L.111 -  // pdfMake.vfs = pdfFonts.pdfMake.vfs;
-  pdfMake.vfs = pdfFonts;
+  pdfMake.vfs = pdfFonts.pdfMake.vfs;
+  // pdfMake.vfs = pdfFonts;
# -----

# ビルドする
yarn build

とりあえずの使い方

ファイルおいてサーバ起動
# PDF化したいopen api ファイルを設置(json or yaml)
# {RapiPDFルート}/docs/spec/

# RapiPDFサーバ起動
yarn serve
PDF出力
  • ブラウザで開く
    http://localhost:8080/

  • PDF化したいファイルを指定して GENERATE PDF を押下

スクリーンショット 2022-10-17 10.31.20.png

これで日本語含むOpenAPIドキュメントもPDF出力できる。はず。
もともと入ってたROBOTOフォントも残したい場合はフォントをDLしてフォントファイルを生成すると良い。
https://fonts.google.com/?query=roboto

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
What you can do with signing up
1