[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1616) Re: [ruby][AppleScript][InDesign]rb-appscript



とりあえず動いています。PDF書き出しもできました。AEベースなんで、実行速度もそこそこ早い。

#! /usr/bin/ruby -Ku
my_file = 'y01'
my_yaku = 'デザイナー'
my_name = '市川せうぞー'
my_mail = 'hogehoge@gmail.com'
my_dir = '/Users/hogehoge/Sites/NameCard/'#作業ディレクトリ
my_dir_mac = 'Macintosh HD:Users:hogehoge:Sites:NameCard:'#作業ディレクトリ(Mac path)
my_pdf = 'namecard'#PDF書き出しプリセット名

begin
    require 'rubygems'
rescue LoadError
end
require 'appscript'


my_app = Appscript.app('Adobe InDesign CS3')
my_doc = my_app.open(my_dir_mac + my_file + '.indd')
my_doc.text_frames['yaku'].set(my_yaku)
my_doc.text_frames['name'].set(my_name)
my_doc.text_frames['mail'].set(my_mail)

#オーバーフローしているときに自動長体
for i in my_doc.text_frames.get()
	while  i.overflows.get()
		tmp_scale = i.parent_story.horizontal_scale.get()
		break if tmp_scale < 50
		i.parent_story.horizontal_scale.set(tmp_scale - 2)
	end
end

#PDF書き出し
my_doc.export(:format=>:PDF_type, :to=>my_dir_mac + my_file + '.pdf', :using=>my_pdf)
#保存しない
my_doc.close(:saving=>:no)



CGI部分も書き加えて、InDesign Server代わりにしようという企みが茂呂見えなんですけど^^、実際にはlocalhost上でしか動かさないから、ライセンス違反じゃないですよね。ASで動かしているのとおなじ。
InDesign ServerはMySQLみたいなライセンスじゃないから、ボリュームに合わせて買わないといけない。使えるかどうかわからんものは買えない、というジレンマがあると思います。
この方法だったら、いろいろテストできて、かつお仕事であればお客さんサーバー用にInDesign Serverを買えばいい。スクリプトもそのまま使える。
今年のPage2007でInDesign Serverの実機を見ながら説明していただいたんですが、InDesign ServerはPDFなんかを書き出した後に、それを直接もらえないと聞きました。つまり常駐監視。ダサイ。
この方法ならCGIからリクエスト受け取って、ページネーション、PDF書き出し、PDFの送出まですべてruby CGI内で完結します。タイムロスはありません。
...ということでやってるのね。

でだ、
ASのwhose節がうまくない。
my_doc.text_frames[its..overflows == true].get()
みたいのがダメっぽい。いろいろ探したり、いろんな書き方を試してみたけど。
メーリングリストも入っちゃったよ。流量が少ないみたいだけど。
http://rubyforge.org/mailman/listinfo/rb-appscript-discuss