adbird(広告鳥) 備忘録

decktapeを使って、reveal.js のスライドを PDF に変換する方法

decktape: PDF exporter for HTML presentations

nodejs、npm の最新版をインストールする(ubuntuの場合)

apt で入る nodejs、npm は古いものらしいので、新しいものを入れる。

1.とりあえず古くてもよいのでnpmが必要なためインストール

$ sudo apt install nodejs npm

2.n をインストール

$ sudo npm install -g n

3.n を使って 推奨版(LTS版)にする。

$ sudo n lts

もし、最新版にしたいのであれば、

$ sudo n latest

4.古いほうのnodejs、npmはアンインストールする

$ sudo apt purge nodejs npm
$ sudo apt autoremove

端末を閉じて、一旦終了させる。

Windowsの場合

まずNode.jsをインストール

winget search nodejs

で検索。今回はID名「OpenJS.NodeJS」のをインストール。

winget install "OpenJS.NodeJS"

でOK。

decktape をインストール

$ npm install -g decktape

npm install -g xxxでパッケージをインストールしようとすると、権限絡みのエラー(permission denied)が出る場合

ホームディレクトリにグローバルインストール用のディレクトリを作成

$ mkdir ~/.npm-global

新しいディレクトリパスを使用するようにnpmを構成

$ npm config set prefix '~/.npm-global'

任意のテキストエディタで、~/.profileファイルを開いて次の行を追加

# nmpのグローバルインストール用のディレクトリにパスを通す
PATH="$HOME/.npm-global/bin:$PATH"

更新

$ source ~/.profile

PCを再起動。

再度、

$ npm install -g decktape

でインストール。

$ decktape -h

で確認。

decktape でスライドをPDFに変換。

$ decktape reveal --size 1024×768 入力.html 出力.pdf

revealをつけることで、reveal.jsでfragment要素を付けたものが表示される。もし、PDFでもfragment要素を付けたものを表示させないようにするには、decktape reveal --fragments--fragmentsオプションをつける。

reveal.jsの解像度に一致させることで、同じサイズ感のスライドが作れる。

reveal.jsのデフォルトの解像度は 960x700 。

しかし、現行のビジネス用プロジェクターでは

  • XGA:1024×768
  • WXGA:1280×800

を採用している機種が多いらしい。

古いプロジェクターの場合、

の場合もあるとか(プロジェクター 解像度 | 知っておきたいプロジェクターの基礎知識 | CASIO)。

なので、reveal.js pandoc 関連の覚書 画面サイズで、reveal.jsの画面サイズをXGA:1024×768にしておいて、decktapeも同じサイズにしておくのが無難なのかもしれない。

私のある環境では、--size 1123x794 でPDFがA4横置きになった。たぶんPC環境によって入れる数値が変わる?

decktape のアップデート

$ npm outdated --global

でインストールされている、更新が必要なnpmパッケージが全て表示される。

もし、リストに表示された、decktapeを含む全てのパッケージをアップロードするなら、

$ npm update --global 

最新のバージョンにアップデートされたのかを確認。

$ npm list --depth=0 -g decktape

Geanyにコマンドを登録

Windowsだけかもしれないが、ビルド>ビルドコマンドを設定で、「Markdownコマンド」に設定してもできなかった…。

しかし、同じく、ビルド>ビルドコマンドを設定 で、
「コマンドを実行」のところに

decktape reveal "%e_スライド.html" "%e_スライド.pdf"

を設定すればできた。

参考