0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

wkhtmltopdfで大量の画像を含むPDFを書き出すと途中でエラーが出る件

Posted at

はじめに

MLモデルに大量の画像を食わせて、それらの結果を一覧表示したいときにいろいろな方法があると思います。
jupyter-notebookを用いている場合はそのまま出力すれば良いですし、OpenCVやmatplotlibなどを使うのも良いでしょう。

ただ、その画像が大量にある場合。検証目的でできるだけ複数の画像を並べる必要がある場合。
HTMLに書き出してPDF化してしまうのが一番楽なのではないかと思いました。
ということでjinjaを使ってHTMLを書き出して、wkhtmltopdfでPDF化しようとしてみますが、ちょっと困った事があったのでメモ。

起こったこと

$ wkhtmltopdf --enable-local-file-access src.html dst.pdf

を実行すると、以下のエラーが大量に出る。

file:///path/to/image1.jpg (ignore) Warning: Failed to load
file:///path/to/image2.jpg (ignore) Warning: Failed to load
file:///path/to/image3.jpg (ignore) Warning: Failed to load

出力されたPDFを見ると、最初の方こそ画像が表示されているけど、後半に行くにつれて画像が出なくなっていました。
原因を調べてみると、リソース制限に到達しているためでした。これを緩和します。

解決方法

ulimitコマンドを用いてリソース制限を緩和します。

$ ulimit -n 8192

ただし、対象ホストにsshで接続している場合は次のようなエラーが出ます。

ulimit: error setting limit (Operation not permitted)

僕の環境では外部からアクセスできるサーバでなかったため、/etc/ssh/sshd_configUsePrivilegeSeparation noを追記して再接続しました。
このオプションがyesになっている場合は、sshdが非rootの子プロセスを作ることで、root権限と分離しています。

おまけ:その他のエラー

もし以下のエラーが発生した場合……

Warning: Blocked access to file file:///path/to/image1.jpg

--enable-local-file-access オプションがないとローカルのファイルへのアクセスができないようですので忘れずにつけましょう。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?