PNGが大量に含まれているDVIにて、dvipdfmxを実行すると、ものすごい時間がかかるのですが、これは仕方がないのでしょうか?
具体的には、一つのPNGファイルの容量が5メガ程度で、50ファイル程度あると、pdfの生成が完了するまで、約20分程かかります(正確には計っておりませんが……)。
uplatexにてdviの生成にはそれほど時間がかかっておりません(1分程度で終了する)。
なお、pngが含まれていないdviの場合、pdfの生成にはそれほど時間がかからないので、明らかにpng原因であると推測されます。pngが含まれているdviの場合、pdfの生成に時間がかかるのは仕方が無いのでしょうか?
PDFに埋め込む画像ファイルが、どのようなPNGやJPGかどうかにも依るところが大きいですが…、
dvipdfmx による zlib 圧縮レベル(デフォルトは9(最大圧縮))を 3 ぐらいに変えると、
多少なりとも生成されるPDFファイルサイズが増える代わりに、PDF生成時間がそれなりに減るかもしれません。
具体的には、以下のコマンドを試してみてください。
## dvipdfmx -z 9 (最大圧縮)
$ time dvipdfmx foo
$ du -hs foo.pdf
## dvipdfmx -z 3 (ほどほどに圧縮)
$ time dvipdfmx -z 3 foo
$ du -hs foo.pdf
## dvipdfmz -z 0 (無圧縮)
$ time dvipdfmz -z 0 foo
$ du -hs foo.pdf
dvipdfmx による zlib 圧縮レベル(デフォルトは9(最大圧縮))を 3 ぐらいに変えると、
多少なりとも生成されるPDFファイルサイズが増える代わりに、PDF生成時間がそれなりに減るかもしれません。
具体的には、以下のコマンドを試してみてください。
## dvipdfmx -z 9 (最大圧縮)
$ time dvipdfmx foo
$ du -hs foo.pdf
## dvipdfmx -z 3 (ほどほどに圧縮)
$ time dvipdfmx -z 3 foo
$ du -hs foo.pdf
## dvipdfmz -z 0 (無圧縮)
$ time dvipdfmz -z 0 foo
$ du -hs foo.pdf
dvipdfmxでもpdfLaTeXでも、「PDFを挿入する」場合には中のバイナリデータがそのまま使われるようです。なので、もし「PNG画像が変更されることがない」のであれば、PNGをPDFにいったん変換してそのPDFを代わりに読み込むことで、時間のかかる処理を一度だけで済ませることができます。
PNGをPDFに変換するのはImageMagickなどのソフトウェアで実現できます(しかしImageMagickを使うと圧縮効率が悪いのでファイルサイズが大きくなるようです)。あるいは
\documentclass{article} \usepackage{graphicx} \begin{document} \includegraphics{image.png} \end{document}
のようなLaTeXファイルを作ってそれをpdflatexで変換する、という方法もあります。