それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

chrome でHTML をPDFに変換する

HTMLをPDFに変換する --print-pdf オプション

HTMLをPDFに変換するコマンドは、いくつか有るけれど、 chrome のオプションだけで実現できる。

しかも chrome59 から headless オプションがあって更に便利になった。

コマンドの使い方

chrome-bin --headless --print-pdf=path/to/output.pdf  input_url

input_url のところには、ブラウザで開けるものなら、大抵のものが入る。

ローカルファイルなども印刷するできる。

chrome-bin --headless --print-pdf=path/to/output.pdf  /path/to/index.html

mac os の場合、直接バイナリを指定する

macOS X の場合は .app の中身をたどって指定する必要がある。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
 --headless\
 --print-to-pdf='/Users/takuya/Desktop/a.pdf' \
file:/Users/takuya/Desktop/sample.html

開けないURLはどうするのか

ログインが必要なURLなどはどうするのか。

Cookieを拾ってくるしか無い。Cookieはプロファイルに入ってるのでプロファイルから拾うしかない。

--user-data-dir=/Users/takuya/Library/ApplicationSupport/Google/Chrome/Default/"

プロファイルを指定することでCookieを拾えるのでそこから何とかする。ただし、プロファイルは起動時にロックが掛かるので、同時に複数のインスタンスで使用できない。その為に、セッションのCookieは扱うのがとても面倒なので、Chromeをいったん終了したら消えてしまうセッションCookieを扱うには、Chromeを強制終了したりSelenium側でAddCookieするとか面倒くさい処理がひつようになる。

参考資料

List of Chromium Command Line Switches « Peter Beverloo