TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by 萩原 淳一郎 -
Number of replies: 7

いろいろ調べたのですが力尽きてしまいましたので、皆様のお知恵をお借りできればと存じます。
先日TeXLive2015をインストールし快適に利用していたのですが、PDFの図を挿入した文書を作成した所、dvipdfmxがPDFのバウンディングボックスの情報を反映しないとおぼしき状況に遭遇してしまいました。
事前に調べた範囲では、TeXLive2015からは*.xbbファイルを明示的に作ることなしに、裏でextractbbが自動実行されているものと理解しています。
ただし、*.xbbファイルが存在すればそちらを優先して読み込む「はず」なので、まずはテスト用に*.xbbファイルを作成して試してみました。

テスト用に作成したPDFファイル『ofdm2.pdf』は元はRで作成したものをイラストレータで意図的に狭く(画像の一部しか含まないように)ArtBoxを変更したもので、pdfinfoの出力は以下のようになっています。

$ pdfinfo -f 1 -l 1 -box ofdm2.pdf
Title: ofdm2
Creator: Adobe Illustrator CS4
Producer: Adobe PDF library 9.00
CreationDate: 04/27/16 12:37:52
ModDate: 04/27/16 12:37:52
Tagged: no
Form: none
Pages: 1
Encrypted: no
Page 1 size: 504 x 378 pts (rotated 0 degrees)
Page 1 MediaBox: 0.00 0.00 504.00 378.00
Page 1 CropBox: 0.00 0.00 504.00 378.00
Page 1 BleedBox: 0.00 0.00 504.00 378.00
Page 1 TrimBox: 0.00 0.00 504.00 378.00
Page 1 ArtBox: 68.75 63.36 487.09 360.72
File size: 165163 bytes
Optimized: no
PDF version: 1.4

extractbbの出力結果は、以下のようになりました。

$ extractbb ofdm2.pdf
$ cat ofdm2.xbb

%%Title: ofdm2.pdf
%%Creator: extractbb 20150315
%%BoundingBox: 69 63 487 361
%%HiResBoundingBox: 68.745100 63.360400 487.095000 360.720000
%%PDFVersion: 1.4
%%Pages: 1
%%CreationDate: Wed Apr 27 05:48:48 2016

ここまでは想定内の動作で、ここからが(少なくとも私にとっては)想定外の動作になります。
ofdm2.pdfとofdm2.xbbを同じフォルダにおいたまま、以下のtexファイルをptex2pdfでコンパイルしてみました。

\documentclass{article}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\includegraphics[hiresbb,width=5cm]{ofdm2.pdf}
\end{document}

ofdm2.xbbの情報が反映される場合、イラストレータで意図的に狭く設定したように画像の一部しか含まないような出力が行われると思ったのですが、実際には画像がフルサイズで出力される結果が得られました。
またofdm2.xbbを削除してコンパイルしても、同じ結果が得られます。
ちなみに、同時期に別のWindowsマシンにインストールしたTeXLive2015でも同じ結果が得られました。

これは仕様なのか、私の設定や処理が適切でない部分があるのかが分かりませんでしたので、この場で質問をさせて頂きました。
思い違いをしている可能性もあるかもしれませんが、ご確認を頂けますと助かります。
よろしくお願いします。

In reply to 萩原 淳一郎

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by aminophen -

私の TeX Live 2015 環境で試してみましたが、きちんと ArtBox が使われて画像が取り込まれるようです。

添付いただいた ofdm2.pdf のバウンディングボックスは

Page    1 MediaBox:     0.00     0.00   504.00   378.00
Page    1 CropBox:      0.00     0.00   504.00   378.00   [Implicit]
Page    1 BleedBox:     0.00     0.00   504.00   378.00
Page    1 TrimBox:      0.00     0.00   504.00   378.00
Page    1 ArtBox:      68.75    63.36   487.09   360.72   [dvipdfmx BB]

となっています。dvipdfmx (extractbb) は C → A → T → B → M の順に明示されている最初のものを使う
ので、この場合 ArtBox が選ばれるという萩原 淳一郎さんの想定は正しいと思います。仕上がりの PDF を添付
していただいていないので萩原 淳一郎さんのところでどんな結果になったのか理解できないのですが、
私のところで試してみるとちゃんと ArtBox の範囲が dvipdfmx に取り込まれていると思います。

\documentclass{article}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\fboxsep0pt
\fbox{\includegraphics[hiresbb,width=5cm]{ofdm2.pdf}}
\end{document}

として枠を付けてみた私の結果を添付します。(test-dvipdfmx.pdf)
1ページ目は「ArtBox 以外のボックスが使われた場合」の結果で、2ページ目は「ArtBox が使われた場合」の結果です。

>思い違いをしている可能性もあるかもしれませんが
とのことなので、萩原 淳一郎さんのところで2ページ目と同じ結果が出るようなら、それは正常な結果です。

(比較用の1ページ目は「好きな Box を指定する」という TeX Live 2016 以降で新設されたインタフェースを
使って作成したものです。2ページ目を TeX Live 2015 の dvipdfmx で作成し、最後に Acrobat で結合。)

ちなみにバウンディングボックスはヤヤコしいので、pdfcrop を使って余白を自動クロップしてしまった
ほうが何も考えなくてよいです。

$ pdfcrop ofdm2.pdf
PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek.
==> 1 page written on `ofdm2-crop.pdf'.

In reply to aminophen

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by 萩原 淳一郎 -

アセト アミノフェン

萩原淳一郎です。

ご確認並びにアドバイスありがとうございました。

私の手元で得られた結果を添付しなかったため、お手数をおかけいたしました。

私の手元で得られた結果はご作成いただいた2ページ目と同じものでしたので、今回の質問は私の誤解であり、表題のような現象は発生していないことがわかりました。

お騒がせして申し訳ございませんでした。

ご指摘の通りxxxBoxの類は分かりずらいので、pdfcropを活用したいと思います。

#イラストレータの表示に惑わされました...

ちなみに*.xbbの中身の値を手動で変更すると、そちらの結果が優先される結果となっていました。

ご協力ありがとうございました。

In reply to 萩原 淳一郎

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by marmot 1123 -
こんにちは.自分も同様のコンパイルエラーに遭遇し,
原因が突き止められたと思われるので,報告します.

挿入しようとしたPDFのバージョンが1.4だと,platexでコンパイルしたときに

! LaTeX Error: Cannot determine size of graphic in filename (no BoundingBox).

のエラーが出て止まるのですが,IllustratorなどでPDFのバージョンを1.3に落としたところ,コンパイルが通りました.

念のため自分のコンパイル環境を書いておきます.
OS: MacOSX El Capitan
MacTeX: TeX Live 2015
latexmk
- platex
- dvipdfmx

もしPDFのバージョンが1.4以上でも図の挿入が可能な方法があるならばご教授願えれば幸いです.
In reply to marmot 1123

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by aminophen -
PDF のバージョンが 1.4 の場合は、ほとんどの PDF が取り込みに成功すると思います。
PDF 1.5 以上だと、TeX Live 2014 までの環境で
「DecodeParms があって未サポートである」
旨の警告が出たのちに、エラーが出て止まるケースがありました。(参考

実際に関さんが作成なさった PDF の例を提示していただけると、PDF バージョンの問題なのか
はっきりすると思います。
In reply to aminophen

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by marmot 1123 -
自分が取り込もうとしたPDF1.4のファイルを添付します.
このPDFは紙をスキャナでスキャンして作製したものです.
すでにバージョンを落として取り込みはできているのですが,
確認していただけるなら幸いです.
In reply to marmot 1123

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by aminophen -
PDF のバージョンの問題ではなくファイル名にドットが入っているからではないでしょうか。

「pdf1.4.pdf」という名前だと、拡張子が「.pdf」なのか「.4.pdf」なのか
判断できなくて失敗するというのが以前にも出ていました。マルチドットのほかにも
スペースや記号を使うとダメになります。
参考:[forum:1357], [forum:1577], [forum:1698]

\usepackage{grffile}

を書き加えると一応通るようになる場合が多いです。
In reply to aminophen

Re: TeXLive2015(Windows)のdvipdfmxがincludegraphicsでPDFのバウンディングボックス情報を反映しない?

by marmot 1123 -
なるほど,確かに拡張子の直前以外のファイル名にドットを入れていました.
そして,
\usepackage{grffile}
を入れたらPDF1.4のファイルも取り込んでコンパイルが通りました.
ありがとうございました.