webページをPDFにする

webページをPDFにする

wkhtmltopdf
を使うとHTMLファイルをPDFにできる

これを python で使うライブラリが
pdfkit

この2つがあれば python をつかって
HTMLを PDF
に変換できる

インストールは pip を使う

1
pip install pdfkit

でインストール

pdfkit のインポートは

1
import pdfkit

やることはスクレイピングと同じなので利用に注意

google のトップページをPDFにするなら

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化できていなかった