[PowerPoint の PPTX を Markdown に変換 / Markdown を PDF に変換する際に使用できるツールを調べる機会がありましたので情報をまとめておこうかと思います。
pptx を Markdown に変換
pptx を Markdown に変換する場合、次の 2 種類が活用できそうでした。
Aspose.Slides は有償のライブラリとなるため購入が必要となりますが、トライアルで使ってみた感じでは PowerShell スクリプトにも組み込みやすく、使いやすそうなライブラリとなっていました。
pptx2md は OSS で公開されており、Python でコーディングされたものとなりますが、pip でインストールすると exe 化されたファイルが導入されますので、こちらもスクリプトには組み込みやすかったです。
私は pptpx2md を使用して pptx を Markdown に変換したのですが、以下のような対応を行っていました。
- 図形描画 / 図形挿入をした内容は想定通りの内容でエクスポートされないため、全体を一つの画像として pptx 上に挿入
- 図形の背景が透過してしまい、ダークテーマのような環境では字がつぶれてしまう場合のことを考慮し、後ろに白の塗りつぶしをした図形を埋め込んでおきました
- 文字の修飾によっては読みづらくなってしまうことがあるため、「–disable-color」オプションを指定して変換
- 表のセル結合はあきらめる
- 非表示スライド / ノートも Markdown に出力されていたため、不要であればスライドから事前に削除しておく
- 箇条書き / リスト段落が変換後は消えていることがあるため、変換後の Markdown で手動で修正しておく
pptx 側で pptx2md で Markdown に変換されることも意識したスタイルで記載しておく必要がありましたが、変換後の内容としては悪くなかったかと思います。
Markdown を PDF に変換
変換された Markdown を PDF に変換する際には次の 2 種類が活用できそうでした。
- md-to-pdf: Node.js のパッケージ
- Markdown PDF: Visual Studio Code の拡張機能
md-to-pdf は npx 経由でコマンドラインから実行することができ、コンフィグやスタイルをファイルとして定義しておき複数の環境で再利用がしやすかったため、今回は md-to-pdf を使用しました。
md-to-pdf は Puppetter を使用して HTMLへの変換を行ってから PDF に変換しているようで、「–config-file」の指定としては、PDFOptions interface の内容が活用できます。
pptx と似たようなレイアウトで出力を行う場合には次のような設定が必要になってくるかと。
- 印刷向きが横のレイアウトで作成する場合は「format="A4"」「landscape=true」を指定
- 改ページを行う場合、Markdown 側で「<div class="page-break"></div>」のタグを挿入しておく
- 「headerTemplate」「footerTemplate」でセンタリング等を実施したい場合「<div style=’width: 100%; font-size: 10px; text-align: center;’>内容</div>’」で width: 100% を指定しておく。