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するとか面倒くさい処理がひつようになる。