M.C.P.C.

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


| トップページ |

2007年5月23日 15:50

RSSをInDesignCS2で自動組版するPerlを書いてみた

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

僕の 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 を元に、紙面が作れちゃうってことです!

投稿 大野 義貴 [Script] | |

トラックバック(0)

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

コメントする