deck2pdf: HTMLスライドをSlideShareなどにアップロードしたい自分のためのコンバーター

初回の開発開始から1ヶ月ぐらいかけてひっそりと作っていたのですが、このたび最低限の普段使いはできるレベルまでは進んだつもりなので、ブログの記事にしました。

PyPI に deck2pdf というパッケージをリリースしました。現時点でのバージョンは0.2.0です。

何をするものか

端的に言えば、 Google HTML5 slidesGoogle I/O 2012 slides などのHTMLフォーマットのスライドを、可能な限りレイアウトを崩さずに1コマンドでPDF変換するものです。

現状ではPySide経由でQtを使う以外は、ほぼすべてPythonで実装されています。

どうして作ったのか

自分が簡単なスライドを用意するときは、 Sphinx 拡張の Hieroglyph から生成したスライドを用いています。 ですが、HTMLスライドはSlideShareやSpeakerDeckにはアップロードできません。(SlideShareはpptxやpdf, SpeakerDeckはpdfのみ)

となると、どうにかPDF形式のものを用意する必要があるのですが、先人の知恵を見て回った感じだと概ね次のパターンに分かれていました。

  • ブラウザでPDF保存する(print用cssを用意するケースあり)

  • PhantomJSなどで各ページのキャプチャを取得して、convert等でつなげる

これらの方法を整理するのも問題ないのはわかっていたのですが、 半ば 「せっかくだから」 という理由で

  • Pythonでページをキャプチャして

  • PythonでPDFを生成する

  • というのをまとめて動かす

というのに挑戦してみました。

現状どこまで出来るか

今回アップロードしたver 0.2.0の時点で、以下のことまではできるようになっています。

  • Google HTML5 slides もしくは Google I/O 2012 slides のスライドをPNGでキャプチャして

  • そのままレイアウトをほぼ崩さずにPDF化する

このままだと、テキスト部分をSlideShareが読み取れないのでなんとかできないかを検討している段階です。 それでも、この時点でもPDFとして見苦しくない形式では変換できているので、社内向け社外向け問わず機会を見つけてはスライドを作っていけたらなぁと思っています。