M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2004年9月 1日 00:01

おつむが弱い面付けソフトを支援するperlスクリプト

このエントリーをはてなブックマークに追加 mixiチェック

PDFアイコンiMac G5 なんて、DVI端子がついていて、Mac の機能をころして PC/AT 互換機のモニタとして使用できるのであればちょっとだけ興味が出たのに。

~~~

某面付けソフト、PDF を90度回転させるとずれるので、それをむりくりあわせるため、補正値を求めるスクリプトを作りました。むりくりのむりくりたるゆえんです。左90度専用。右90度したいときは、180度回転の行列を掛ければいいのではないかしら(未確認)。

Illustrator 8 から書き出した PDF は、
http://www.iwahiro.com/d/dtp/qxd/012.html
でも有名な、Illustrator 8 でルーラーの原点を変えると、BoundingBox の起点が変わってしまう件が効いていまして、変な /MediaBox (起点が中途半端な座標)になっています。

面付けソフトが、起点の座標を考慮してちゃんと計算してくれればいいのですが、ちゃんと計算してくれないものもあったわけですね。

~~~hosei.pl~~~

#!/usr/bin/perl
while(<>){ if (/^\/MediaBox\s*\[\s*(-?[\d\.]+)\s(-?[\d\.]+)\s(-?[\d\.]+)\s(-?[\d\.]+)\s*\]\s*/) { @MediaBox = ($1,$2,$3,$4); last; } } print "/MediaBox : "; print "($MediaBox[0], $MediaBox[1]) - "; print "($MediaBox[2], $MediaBox[3])\n";
$a = $MediaBox[0]; $b = $MediaBox[1];
$dx = ( $a + $b); $dy = (-$a + $b);
print "pt:(dx, dy) = ( $dx, $dy)\n"; $dx /= 72 / 25.4; $dy /= 72 / 25.4; printf "mm:(dx, dy) = ( %0.4f, %0.4f )\n", $dx, $dy;

~~~ここまで~~~

こいつに、PDF をぶっこむと、補正値が出力されます。ワンライナーで改行コードを変換しているのは、手抜きだからです。

[cl@primrose pdfhosei]$ perl -pe 's/\r/\n/g' hoge.pdf | perl hosei.pl 
/MediaBox : (684, -1489.66113) - (1676.12598, -781)
pt:(dx, dy) = ( -805.66113, -2173.66113)
mm:(dx, dy) = ( -284.2193, -766.8193 )
[cl@primrose pdfhosei]$ 

さて、これで補正値を得られたから、面付けソフトに入力して……

……補正値が大きすぎて入力できませんでした

補正値ぐらい、リミッターをつけないでほしいと思いました。

昨日の仕事の時間の大半はこれの座標変換行列を求めていたなんて言えるわけがありません。

投稿 大野 義貴 [PDF] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/325

コメントする