Markdown から PowerPoint (pptx) を作成したくて Docker イメージを作ったという話
Markdown から PowerPoint を生成できたら便利そうなのにと思ったら、いつの間にか Pandoc が公式に PowerPoint (pptx) への出力に対応していました。
昔は、PDF までは変換できて、あとは Adobe Acrobat の機能で PowerPoint 化する必要があったのですが、PDF を経由しなくても変換できるのはいいですね *1。
インストールするイメージはここにあります。結構よい頻度で更新されているのも好印象です。
ただ...この Pandoc というのは、Haskell ベースなツールなのです。 Windows な人は普通に msi をインストールしそうなものですが、私はこういう一時的にしか使わないツールなのに、結構大きな実行環境がセットなものをインストールしたくない!という人なので、msi は使いたくありません。
実行環境をまるっと手に入れて使い終わったら捨てたい...そう、いまこそ Docker の出番です。
ただ、Ubuntu のパッケージマネージャーで落ちてくるのが古くて PowerPoint 変換に未対応だったりする罠がありまして、なかなか簡単ではありませんでした。 とうわけで、結局、自分で Dockerfile から Docker イメージを作ることにしました。
せっかくなので、下記に張り付けておきます。
FROM ubuntu:18.04 # Update ubuntu RUN apt-get update -qq RUN apt-get upgrade -qq RUN apt-get install -y wget RUN wget -q https://github.com/jgm/pandoc/releases/download/2.2.1/pandoc-2.2.1-1-amd64.deb RUN dpkg -i pandoc-2.2.1-1-amd64.deb # Install texlive RUN apt-get install -y texlive-latex-recommended # install wkhtmltopdf RUN apt-get install -y -qq xvfb libfontconfig wkhtmltopdf RUN apt-get clean VOLUME /workspace WORKDIR /workspace
Pandoc で PowerPoint へ変換する
まず、上記の Dockerfile から Docker Image を作ります。 お使いのエディターで Dockerfile を作ってそのフォルダー上で下記のコマンドを実行します。 Dockerfile の作成には時間がかかりますので、ご注意を。
docker build -t <yourname>/pandoc .
作成が完了したら、作成したイメージを下記のコマンドで実行します。 -v はホスト環境のボリュームを Docker のコンテナにマッピングするものです。この値は私の環境用の値にしているので、お好きな値に変えてください。
docker run -v /Users/<yourname>/share:/workspace -it <yourname>/pandoc /bin/bash
bash が起動したら、以下のコマンドで Markdown から pptx に変換します。拡張子から判定してくれるので、簡単でいいですね。
pandoc test.md -o test.pptx
おまけ
Dockerfile から docker build を試していると気が付けば大量の停止コンテナと<none>:<none>
なイメージができますよね。
これの削除方法も紹介しておきます。Web で検索すると古い削除方法をよく見かけますが、今のコマンドは以下です。
停止中のコンテナを一括削除するコマンド
docker container prune
リポジトリ名とタグがない (<none>:<none>
な) イメージを一括削除するコマンド
docker images prune
では、良い Pandoc 生活を。Enjoy!
*1:なにより Adobe Acrobat を買わなくていいのがいい(笑)