MarkdownをPDFに変換するnode.jsライブラリ「markdown-pdf」

Page : ( 1 / 2 )


node.jsでmarkdownからPDFに変換するライブラリ「markdown-pdf」の紹介です。

Markdownでドキュメントを書くのはスイスイ書けて Webページではパース出来ますが、問題は作成したドキュメントファイルを配布する時じゃないでしょうか。

" Markdownで作成したドキュメントをそのままエンドユーザーに送る "と考えると、難しい部分があり 配布先にプレビュー出来る環境を用意してもらう必要がでてきます。

そのような手間を省いてもらう為に、" markdown-pdf "を使って、MarkdownからPDFに変換しましょう!

markdown-pdfの導入 〜 使い方

markdown-pdfはnode.js用のライブラリなので、npmコマンドを使ってインストールします。

# markdown-pdfのインストールコマンド
npm install markdown-pdf --save


使い方も至ってシンプルで、元のMarkdownファイル、発行するpdf名を指定するだけで使用出来ます。
( その他にも外部cssファイルの読み込みなどのオプションが用意されています )

// 動作検証にはnode.js 6.3.0を使いました

// 必要最低限の使い方
const
    markdownpdf = require("markdown-pdf");

markdownpdf()
    .from('yourMarkdown.md')
    .to('yourPDF.pdf', () => {
        // callback
        console.log("Published!!")
     });


markdown-pdfにはオプションも用意されており、発行されるPDFのサイズや外部CSSを使ってドキュメントのスタイリングも出来ます。

よく使いそうなオプション

* オプションを使う場合
markdownpdf({ /* この部分に記述していく */})

--
options.cwd

Type: String
Default value: process.cwd()

ウォーキング ディレクトリのプション
--

--
options.phantomPath (phantomjs バイナリのパス)

Type: String
Default value: インストールされているphantomjs moduleのパス
--

--
options.cssPath (cssオプションパス )

Type: String
Default value: [module path]/markdown-pdf/css/pdf.css

MarkdownにCSSを適応できます
--

--
options.highlightCssPath (ソースコードのシンタックスをハイライトするhighlight.jsのCSSパス)

Type: String
Default value: [module path]/markdown-pdf/css/highlight.css
--

--
options.paperFormat (発行するPDFのドキュメントサイズ)

Type: String
Default value: A4

'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'
--

--
options.paperOrientation (PDFの向き)

Type: String
Default value: portrait

'portrait' (縦向き)  or 'landscape' (横向き).
--

--
options.paperBorder (ボーダーオプション : 先の太さ)

Type: String
Default value: 2cm

Supported dimension units are: 'mm', 'cm', 'in', 'px'
--

--
options.renderDelay (発行時の遅延 )

Type: Number 例: 500 (0.5秒) (ms)
Default value:  page.onLoadFinished event fired

* 大量の変換する時などにPDFを処理前に処理を遅らせる
--


試しに、Python製のドキュメントジェネレーター" mkdocs "のindex.mdファイルをPDFファイルにしてみました。
( 日本語が設定無しで使えるか検証する為に、日本語に翻訳しました )

# MkDocsへようこそ

フルドキュメントページ [mkdocs.org](http://mkdocs.org).

## コマンド

- `mkdocs new [dir-name]` - 新規プロジェクトを作成
- `mkdocs serve` - 自動で再起動でされるサーバーの起動
- `mkdocs build` - 静的なドキュメントに変換
- `mkdocs help` - ヘルプ

## プロジェクトレイアウト

```yaml
mkdocs.yml    # 設定ファイル
docs/
    index.md  # ドキュメントのページ
    ...       # その他の画像やmarkdownファイル
```

問題なく日本語も表示されているのがわかります 


また、concat()オプションをつければ、複数のMarkdownファイルを一枚のPDFへの書き込むことも可能。ページ単位で分けるのではなく、セクション単位で分けるような感じです。cssやjsファイルの連結とイメージすればわかりやすいかもしれません。

const
   markdownpdf = require("markdown-pdf");
        
const files = [
    '1-doc.md' , '2-doc.md' , '3-doc.md' 
];

markdownpdf()
    // 複数のmarkdownを一枚のPDFに書き込み
   .concat.from(files)
   .to('/path/mydoc.pdf', function() {
      // callback
      console.log("Done")
    })


3枚のMarkdownファイルを1枚のPDFに書き込み

しかしながら、マニュアルとして配布する場合 1ページにまとめるのではなく、1枚のPDFに複数のページとして発行したい場合もあります。

次のページでは分割したMarkdownをページ毎にわけて、一枚のPDFにマージさせる方法を紹介します!

 

この記事のカテゴリ
プログラミング

この記事のタグ