webページをPDFにする
wkhtmltopdf
を使うとHTMLファイルをPDFにできる
これを python で使うライブラリが
pdfkit
この2つがあれば python をつかって
HTMLを PDF
に変換できる
インストールは pip を使う
1 | pip install pdfkit |
でインストール
pdfkit のインポートは
1 | import pdfkit |
やることはスクレイピングと同じなので利用に注意
google のトップページをPDFにするなら
1 |
PDFにするときにオプションをつけれる
1 2 3 4 5 6 7 8 9 | options = { 'page-size' : 'A4' , 'margin-top' : '10' , 'margin-right' : '10' , 'margin-left' : '10' , 'margin-bottom' : '10' , 'zoom' : '1.0' , 'encoding' : "UTF-8" } |
あとはPDF変換
1 | pdfkit.from_url(url, 'out.pdf' ,options = options) |
エラーになるので調べたら
wkhtmltopdf
をインストール忘れていたので
これをインストールする
https://wkhtmltopdf.org/
で
Downloads をクリック
今回は ubuntu 16 なので
amd64 をクリック
ダウンロードして保存し
1 | sudo dpkg -i wkhtmltox_0.12.6-1.xenial_amd64.deb |
を実行したが
1 2 3 4 5 6 7 8 9 10 11 | wkhtmltox_0.12.6-1.xenial_amd64.deb を展開する準備をしています ... wkhtmltox (1:0.12.6-1.xenial) を展開しています... dpkg: 依存関係の問題により wkhtmltox の設定ができません: wkhtmltox は以下に依存 (depends) します: xfonts-75dpi ...しかし: パッケージ xfonts-75dpi はまだインストールされていません。 dpkg: パッケージ wkhtmltox の処理中にエラーが発生しました (-- install ): 依存関係の問題 - 設定を見送ります man -db (2.7.5-1) のトリガを処理しています ... 処理中にエラーが発生しました: wkhtmltox |
となるため
1 | sudo apt install xfonts-75dpi |
でインストール後に
1 | sudo dpkg -i wkhtmltox_0.12.6-1.xenial_amd64.deb |
で再度実行すると
インストールできた
1 | pdfkit.from_url(url, 'out.pdf' ,options = options) |
でOK
すべてのwebページがレイアウトどおりPDFにできるわけではないので注意
サイトによっては
サイドバーがPDF化できていなかった