はじめに
Mouse Dictionaryをpdfで使うために、PDF.jsを用いるという方法がある。(@kroton様の参考記事)
しかし、私のようなめんどくさがりは、これすらも面倒くさいので以下のようなツールを作った。
- ワンラインでネット上のpdfをPDF.jsで開く
- ローカルに落としたpdfをわざわざ削除しなくてもよい
完成物
開発環境
- Manjaro linux
- Python 3.7.3
- Docker 18.09.5-ce
実現方法
- Dockerコンテナ内にpdfを落とす。
- そのままDockerコンテナ内でPDF.jsが機能するPHPビルトインサーバを立てる。
- ローカルのブラウザからDockerコンテナ内のpdfを閲覧する。
- ダウンロードしたpdfはDockerコンテナが終了すれば(再起動時や明示的にコンテナを停止させた際)自動的に消える。
また、複数のpdfを同時閲覧することを前提とし、自動で動的にDockerコンテナとローカルのポートフォワーディングをするために、Pythonプログラムにコンテナ立ち上げを仲介させることにした。
課題点
DockerイメージのEntrypointとなっているシェルスクリプトが終了すると、例え-d
オプションをつけてrunしてもコンテナはなぜか終了してしまう。
それにより、コンテナ内でPDFのサービングが開始したことをPython側にシンプルに伝える方法がなく、コンテナ内の必要処理が終了する前に、Pythonがブラウザを開いてしまう。
最後に
実装があまりスマートではないので、どしどしアドバイスやPR待ってます。