RSSをInDesignCS2で自動組版するPerlを書いてみた
スポンサードリンク
僕の Windows XP 端末は User 権限で動いていて、Script 関連がものすごくいじりにくい状況になっていたので、InDesign の自動組版系はもう萎え萎えでやる気なかったのですが、Perl から Win32::OLE を使うことによって制御する例が、
InDesign居残り補習室 JSやVB以外でも [kstation2.blog10.fc2.com]
経由
いんでざいんnoすくりぷと:VB、JS以外でスクリプト [www2s.biglobe.ne.jp]
で掲載されたので、俄然やる気が出ました。
つうわけで、2年前に作った例
M.C.P.C.: RSSをInDesignCSで自動組版するJavaScriptを吐き出させるCGIを設置してみた
を、Perl から InDesign を操作する形でやってみることにしました。
~~~
ActivePerl 5.8 + InDesign CS2 で、RSS を InDesignCS で自動組版する例を作ってみました。元の RSS は2年前の例と同じで TSUTAYA online からとっています。
#!/usr/bin/perl # tu.pl - RSS から InDesignCS2で 自動組版します。 # 参考にした↓ # http://allabout.co.jp/career/cgiperl/closeup/CU20050131A/ # # 2005.02.28 v0.1 初版(絶版) # http://blog.dtpwiki.jp/dtp/2005/02/indesigncsrssja.html # 2007.05.23 v0.1 改変初版(絶版) use strict; use warnings; use LWP::Simple; use XML::RSS; my $url = 'http://www.tsutaya.co.jp/rss/ranking/uresuji_music.rdf'; my $data_from_web = get($url); # XML::RSSを使う準備。 my $rss = new XML::RSS; # WEBから取得したデータを解析。 $rss->parse($data_from_web); # アイテムリストのリファレンス my $item_list = $rss->{'items'}; my $list; # リストの各データを順に処理。 # 各データは、アイテム情報を保存したハッシュへのリファレンス use Win32::OLE; use Encode; my $oID = Win32::OLE->GetActiveObject('InDesign.Application.CS2_J') || Win32::OLE->new('InDesign.Application.CS2_J'); my $oDoc = $oID->Documents->Add(); my $x = 20; my $y = 20; my $i = 0; foreach my $item ( @{$item_list} ) { my $oTFrm = $oDoc->Pages(1)->TextFrames->Add(); $oTFrm->{'visibleBounds'} = [ $y+$i*10, $x, $y+$i*10+10, $x+100]; $oTFrm->{'contentType' } = 'ContentType.textType'; $oTFrm->{'Contents' } = encode('cp932', $item->{'title'} ); $i++; }
実行結果はこんな感じです。
~~~
そんで、これがなに? ていう話ですが、ランキングを Web と紙面で作る業務があったとき、Web にでているランキング RSS を元に、紙面が作れちゃうってことです!
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2083
コメントする