ワテのブログ

The fundamental things apply As time goes by.

2013年7月26日金曜日

dvipdfmxでepsの画像がずれる件について

スポンサーリンク

こちらを御覧ください[続報]dvipdfmxでepsの画像がずれる件について

概要

ここしばらくTeXを利用してなかったのでいつこうなったのかわからないが、dviファイルをdvipdfmxでPDFを作成するとeps画像がずれることがある。

原因

すべてのeps画像がずれるわけではない。どうやらBounding Boxの左下座標が0, 0でないものがずれるようである。

解決策

epstopdfとpdftopsを使ってepsを一度pdfに変換しその後epsに変換しなおせばBounding Boxが0, 0になる。

#!/bin/bash
fname=$1
epstopdf $1
pdftops -eps ${fname%.eps}.pdf $1

epstopdfでエラーが発生した場合、下記が参考になるかもしれません

単純に考えてBounding Boxの左下座標を0, 0にしてやればよい。epsはテキスト形式のフォーマットで%%BoundingBox: 行を変更してしまえばよいわけだが、描画内容のほうは動かないので平行移動が必要となるがこれは面倒である。

ImageMagickでepsをいったん別のフォーマットに変換してepsにもどしてあげるとBoundingBoxの左下座標は0,0となる。しかし、せっかくのベクター画像がラスター画像になってしまうという悲しさ。

そこで、epstopdfの登場なのです。epstopdfをつかうとepsのBoundingBoxにしたがって余白のないpdfを作成してくれる。しかもベクター画像をたもったままに。変換されたpdfをepsに変換してやれば余白がないわけだからBoundingBoxの左下座標が0,0のepsが作成されるという寸法。

しかし、ここに障壁が。TeXはTeX Installerでインストール。しかし、Windows 7 64bit版でepstopdfを起動すると"Script interpreter is not found in PATH"という残念なエラーが発生する。

ところがすばらしいことにTeX Installer 0.84r6よりWin64版のバイナリも提供されるようになりWin64版のepstopdfを利用すると起動するようになった。いきやうやうとepsをepstopdfに食わせてみたところ、なんということでしょう、!!! Error: Writing to gs failed, signal 127というエラーでとまってしまうじゃありませんか。

このエラーメッセージでググるとこのサイトが出てきた。すばらしいことに修正したスクリプトを公開してらっしゃるのでダウンロードしてためしてみるとこれが見事に動作した。これでOKですよ。epstopdfでepsをpdfに変換後、pdfをepsに変換すればよい。これはpdftopsを使えばよい。

長いみちのりでありました。

スポンサーリンク