2014年5月7日水曜日

EPSのbounding boxを自動調節

論文作成時に,画像を載せるためにEPSファイルを使う場合について.
WindowsでpptxからEPSを作る場合,EPSプリンタでファイル出力した後にGhostviewからbounding boxを設定するという方法があるが,毎回Ghostviewを開くのはけっこう面倒.

Epstoolというのを使えばコマンドラインから自動調節できるらしいが,自分の環境ではうまく動かなかった.
そこで,ghostscriptのコマンドを使ってbounding boxを自動調節するバッチを作った.

ghostscriptのオプションで「-sDEVICE=bbox」とすると,指定したソースファイルのbounding boxを(必要最小限な領域で)計算して返してくれる.

gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=bbox <ファイル名>

その結果を使って,EPSファイルの中身を書き換えれば良い.
書き換えはただのテキスト置換なので,いくらでもやりようはあると思う

@echo off
setlocal enabledelayedexpansion

set currentpath=%cd%
set /p src_filename="Source File Name: "
set /p dst_filename="New File Name: "

gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=bbox %src_filename% 2> tmp.txt
set /p bbox=”” < tmp.txt
del tmp.txt

<src_filename内の「%%BoundingBox:」で始まる行を変数bboxの値で置き換えてdst_filenameに書き出す処理>

endlocal
pause

EPSファイル書き換えの注意点として,EPSファイル冒頭部に「%%BoundingBox: (atend)」から始まる行がある場合,bounding boxはファイル末尾に記載されているため,そちらを書き換える必要がある.(冒頭部は書き換えない)