Ads by Google
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:-- 】 | スポンサー広告 | page top↑
InDesignでJavaScript その21
InDesignでJavaScript その21。

連休だけど休日出勤中。
思いつきでガツガツJavaScriptを書いていたら、なんかうまくいったっぽい。

今回書いたやつの仕様
●テキストから貼り込む画像の名前を取得
●1列目が空だったら同じドキュメントで処理、違ったら保存して閉じて次のファイルを開く
●画像を10個貼るごとに次のページを作る
●テキストの最後の行だったら強制的に保存して閉じる

条件2の処理が結構面倒だった。
行を読み込むのにreadIn()しか使ったことなかったから読み込んだ行数(全体の何行目か)をどう判定するか悩んでたんだけど、よく考えたら一気に全部読み込んじゃって改行でsplitして配列にしちゃえば、しのごの考えなくてもいいってことに思いたった。
いかんなぁ、考えが凝り固まってきてる。

【2008/11/02 14:25 】 | JavaScript | コメント(25) | トラックバック(0) | page top↑
InDesignでJavaScript素人講座 その8
InDesignでJavaScript素人講座 その8

Googleで「InDesign JavaScript」で検索すると、結構いろいろな方がチャレンジされているようです。
自分より有用なものを書かれている方をみるとちょっぴりへこみます。

では、その8スタートです。

今回は「実際に受注された仕事をどうやって効率的にスクリプトで組んでいくか」をテーマにして書いていきます。

例として名刺を作るお仕事を受注したとしましょう。
受注内容としては「異なるデザインで10種類作り、数ヶ月ごとに追加発注」というもの。
現実にそんな仕事があるかどうかはわかりませんが、ものの考え方として捉えてください。

テキストは先方から統一フォーマットで作られたExcelで支給され、1人1列で必要な要素が記入されています。
要素は、会社名、役職、名前etc.です。
10種類のデザインで使う要素は同じだけどオブジェクトの位置やサイズ、フォント、文字修飾等はそれぞれが異なります。

さて、上記のような仕事をあなたならどのように進行しますか?
この講座を読んでくださっているくらいだからきっとJavaScriptでやろうと考えるはず、そこまで思い切れなくても漠然と「手作業は嫌だな」ぐらいには考えるはずです。
そこでこの仕事を受注したとして私ならどうやって進めるか書いてみましょう。

1. 流し込むテキストを作る
支給されたエクセルを加工して流し込むテキストを作ります。
今回は統一されたフォーマットで毎回入稿されますから、一度整形したエクセルをテキスト整形フォーマットとして流用していきます。
あれこれ整形処理をしたあと、最後にエディタに持っていって、完成。

2. フォーマットを起こす
私の場合、納期短縮のため&スクリプト制作に時間をさくため、事前に他人にお願いしておきます。
ただデータとして起こしただけなのでいろいろ仕込む必要があります。
仕込む内容としては
●10個のフォーマットを1つのファイルにしてマスター化(1つのファイルにマスターが10個)
●テキストが流し込まれる部分はすべてスタイルを適用(文字スタイルも作っておくと後で楽です)
●カラーをスウォッチとして登録
●オブジェクトにスクリプトラベルを付ける(同じ要素のオブジェクトは全フォーマットで同じラベル名にする)
などなど。

3. JavaScriptを組む
2で作ったフォーマットを見ながら仕上がりを想像しつつJavaScriptを組んでいきます。
私の場合最初は予定の70%ぐらいの出来の、まずちゃんと動くものを目指して組んでいきます。
残りの30%は残った時間と手間を鑑みて調整していきます。
90%ぐらいなら上出来だと考えておくのが、過度にJavaScriptに期待して挫折しないコツだと思います。
120%ぐらいのものができて自画自賛できる楽しみも残りますし(笑)
いままで散々書いてきましたが「なんか動かないんだけど」というときはスペルや頭小文字になっているか確認してください。
文法は簡単な部類の言語なので相当とんちんかんな人でない限り文法ミスってことはないと思います。
ExtendScript Toolkitも叱ってくれますしね。
あとはIF文やwhile文などは条件分岐がちゃんとされているか確認するためにこまめにalert()を入れて確認することがキモですね。
さてこの工程で一番大事なこと。
『テキストフレームや画像フレームに同じラベル名をつけておけばまったく同じスクリプトですぐに10種類の名刺ができあがります』
だからスクリプトは一個しか作らなくてOK!

4. ポチっとする
InDesignのパレットから作ったJavaScriptをポチっとしましょう。
これで10種類の名刺が流し込まれ、あとは手動で微調整が必要なことがあれば直して完成です。


どうですか?
簡単でしょ?
フォーマットとテキストに共通のルールさえ持たせれば、全然違うデザインのものがすぐに作れちゃうんですよ。
楽しくないですか?

その後の展開として
●10種類作った後に「やっぱフォントは同じフォントで統一したい」と言われても同じスクリプトでさくっと終わります
●「写真を入れたい」と言われてもスクリプトを一個作って10種類に合わせた座標値を実行前に入れるだけでOK
●同じテキストを利用&簡単な自己紹介の書かれた新テキストが支給され「新人歓迎用のカード的なものが作りたい」と言われても名刺と同じ構成で作っておけば自己紹介の部分の処理を加えるだけですぐに完成

すごく簡単な例ですが実際私の仕事ではこんな感じで動かしてます。
上記の「その後の展開として」の3番目のようなお仕事で私は月100万程度稼いでいます(その後の修正作業などもありますが)
制作作業で一番時間のかかるであろう新規組版をさくっと終わらせることができれば利益率もぐっとあがりますよね。


QuarkXpress+AppleScript時代には「こんな機能がないからできない」「処理を多く書きすぎて実用的じゃない」なんて思って悶々としてましたが、いまでは逆に「スクリプトの中身はシンプルに」「処理は関数化して速度を犠牲にしても他の業務に転用できるように」って考えて書いてます。
スクリプターにはデザイナーと違ったデザイン力が必要だと思いますね。
「現実的じゃないところは切り捨てて手でやっちゃおう」って心意気が上達の秘訣と私は思います。
ここら辺はブログで書いてたり書いてなかったりしてますが。

こんな感じでその8はおしまいです。
その9のネタはまだ未定です。

【2008/04/02 12:18 】 | InDesignでJavaScript素人講座 | コメント(0) | トラックバック(0) | page top↑
InDesignでJavaScript素人講座 その7
InDesignでJavaScript素人講座 その7。

その6で「次は『「いま開いているドキュメントのオブジェクトに指示を与えてみよう」的ななにか』をやります」と告知してましたが、予定を変更して与太話を。

では、その7スタートです。

世間ではPAGE2008という印刷系の恒例イベントが開催されていた模様です。
私は仕事のため行けませんでしたが。
そこで行った人のブログ(主にスクリプト系のセミナーの感想など)を見ていて、ちょっと思った事を書き連ねてみます。
これを読んだ人にとってプラスになるかどうかはわかりませんが、お付き合いください。

さて突然ですが。

『スクリプティングにもデザインセンスが必要だ』

そんなことを私は提唱します。
グラフィックではなくプロダクトのほうね。
企画から実際に運用されるまでをトータルで視野に入れておかないといいものはできないよ、という話。

まー、そうはいっても思いついたときが吉日でなんの見通しもないままスクリプトを組んじゃう事のほうが多いと思います。
そんな人は下記だけ守っていれば後で後悔することが減るはず。

●極力汎用性を持たせる(一回しか使えないスクリプトは非効率的)
●100%全自動を目指さない(汎用性を犠牲にしちゃいけない)
●メイン部分は関数化する(汎用性を持たせたい)
●時間がないときは余計な機能を実装しようとしない(非効率的)

カッコ内を読むとわかると思いますが、汎用性を持たせつつ効率よく組んでいきましょうってこと。
とかくDTP業界は自動組版に幻想を抱きすぎなのですよ。
これは経営陣に多いね。
そりゃー、ン百万とかン千万とかかけて外注すればぼーっと見てるだけで完全自動生産ロボット的なものができあがると思いますが、それってもうスクリプトじゃなくてプログラム、もっといえばアプリケーションなのよね。
全然敷居が低くない、むしろ別世界。

も一つ抱えている問題はスクリプトを難しく考えすぎな人が多すぎ。
たしかに取っ付きづらい面もあるとは思うけど、100回コピペしてコピペ能力を鍛えるより、ネットとかあさって勉強してコピペを100回やるスクリプトを覚えたほうが数倍メリットがあると私は断言します。
だって100回コピペする速度って鍛えたって限度があるし肉体的疲労もたまるけど、スクリプトだったら一回組めばあとはスクリプトを起動するだけですむんだよ?
コピペ大好きっていうなら止めはしないけど、「労働時間と給与が見合わない」とか「残業時間が多すぎる」とか愚痴っている暇があったら自らの手でそれらを解決することを考えなさいって。
なんだろうね、そういう人ってスクリプトが普及する=自分たちの首が危ないって思っているのかね。
そうじゃなくて自分に付加価値をつけるって意味合いでも勉強しても無駄じゃないんだよーってことをもっと布教しないといかんのかも。

あとね、手作業が加わったりするようなものは人気がない。
「結局手でやるんだったら意味がない」ってね。
でもさー、手作業で100%作るのと手作業で50%から作ることを等価と考えちゃう理屈が私にはわからんのですわ。

スクリプトのいいところは、プログラム系素人の私のような人間でもちょっと時間をさけばできること、つまり簡便性にあるんですよ。
そして縦横無尽に小回りをきかせることができるってのも重要な特徴。
ま、厳密にいったら違うんだろうけどね。

いろいろ書いたけどスクリプトにアレルギーを持っている人にも喜んで使ってもらえるようなスクリプトを作っていかないとダメだよね。
またスクリプトに興味を持った人が参考にできるような情報配信も必要だよね。

ちょっと話がずれたところで、その7はおしまい。
次回その8でもサンプルには触れず、「実際に受注された仕事をどうやって効率的にスクリプトで組んでいくか」って話をしようと思います。
一応お詫びとして私が業務でどんなスクリプトを書いているかにも触れようと思います。
詳しくは書かないけどね(笑)
【2008/02/19 20:56 】 | InDesignでJavaScript素人講座 | コメント(1) | トラックバック(0) | page top↑
InDesignでJavaScript素人講座 その6
InDesignでJavaScript素人講座 その6。

すっかりご無沙汰の素人講座ですが、仕事の合間をぬってその6をスタートします。
第5回では新規のドキュメントを作成し、そのドキュメントにテキストフレームを作成し、テキストを流すというものでした。
今回は画像について書いていこうと思います。
すごいシンプルですのでちょっと味気なかもしれません。

サンプルは下記になります。



01 | var pageObj = app.documents.add();
02 | pageObj.documentPreferences.pageWidth = "210mm";
03 | pageObj.documentPreferences.pageHeight = "297mm";
04 | txtObj = pageObj.textFrames.add();
05 | txtObj.visibleBounds = ["10mm","5mm","50mm","100mm"];
06 | txtObj.place("HogeHDD:Users:HOGEHOGE:Desktop:test.jpg");
07 | txtObj.fit(FitOptions.contentToFrame) ;



まず上記のScriptをExtendScript Toolkitにコピペしてください(行頭の数字と縦棒は行番号を意味しているので削除してくださいね)。

前回は実行してもらってから説明に入りましたが、今回は先に説明しちゃいます。

いきなりですが1〜5行目まではその5とまったく同じ内容です。
4〜5行目に注目してください。
ここも当然ながらその5とまったく同じです。
つまりテキストを流す場合も画像を貼る場合も対象はテキストフレームになるということです。
楽ですね。

6行目。



06 | txtObj.place("HogeHDD:Users:HOGEHOGE:Desktop:test.jpg");




4行目で作成したテキストフレームに画像を貼り込みます。
place()の( )の中には貼り込むパスが入ります(サンプルはMacOS X用です)。
今回はサンプルなので適当ですが見ている方は自分のマシンの環境をあてこんでください。
「HogeHDDを使用しているMacのHDD名、HOGEHOGEをご自分のログイン名、デスクトップにtest.jpgというファイルを作成」。
これでこのサンプルが実際に動くところが見れると思います。
Windowsの場合は…手元にWindowsPCがないのでよくわからないのですが、貼り込みたい画像ファイルのプロパティにそのファイルのフルパスが表示されていると思うので、それを" "の中に入れれば動くと思います。

7行目。



07 | txtObj.fit(FitOptions.contentToFrame) ;



6行目で貼り込んだ画像をフレームにフィットさせます。
FitOptionsは貼り込んだ画像をどうするか決めるプロパティです。
テキストフレームを右クリックすると出てくる「オブジェクトサイズの調整」のことです。
contentToFrameは上記メニューの「内容をフレームに合わせる」と同義です。
他には
FitOptions.centerContent(内容を中央に揃える)
FitOptions.FrameToContent(フレームを内容に合わせる)
FitOptions.fillProportionally(フレームに均等に流し込む。CS2以降のみ)
FitOptions.proportionally(内容をフレーム内に収める)
があります。
用途に応じて書き換えてください。


どうでしょう?
画像を貼り込む仕組むは理解できましたか?
って、2行だけなのでそんなに難しくはない、むしろ「サンプルが簡単すぎる!」と怒られるかもしれませんね。
でも実際に私が業務で使用しているJavaScriptも6〜7行目だけなので、これだけ覚えればすぐにでも業務に転用できるってわけです。
やっぱり業務に使えなければScriptなんて覚えても意味ありませんからね。

その6はこれでおしまいです。

その7予告。
その5、その6と新規ドキュメントを作成してどうこうといった内容でしたが、その7ではもう少し実用的な「いま開いているドキュメントのオブジェクトに指示を与えてみよう」的なことを書いていこうと思います。
またシンプルな内容になると思いますが、徐々に実践的なものに近づけているつもりなので、もう少々お付き合いください。


【2008/02/14 13:38 】 | InDesignでJavaScript素人講座 | コメント(0) | トラックバック(0) | page top↑
InDesignでJavaScript その20
InDesignでJavaScript その20。

久しぶりにJavaScriptをアップしようか、と思い立ち。
前から書こう書こうと思ってめんどくさくて放置してたJavaScript。

●仕様
Scriptを起動するとますダイアログが表示されるので拡張子.inddのファイルのあるフォルダを選択。
次に表示されるダイアログでEPS保存先のフォルダを選択。
すると最初に選んだフォルダ内の拡張子.inddのファイルを開いて指定した保存先にEPSを保存する。
EPSの仕様は
・TIFFプレビュー
・PostScript 3
・ASCIIフォーマット
・ブリードなし(仕上がりサイズ)
・CMYKカラー

保存先のパスを生成する際にアクロバティックな処理してますが、不本意です(^^;
なんとなくOS Xの「濁点・半濁点が分離しちゃうよ」仕様のが原因な気もしますが、スラッシュをコロンに替えれば動くので、とりあえず。
そのうち原因究明します。
続きを読む
【2008/02/13 16:36 】 | JavaScript | コメント(55) | トラックバック(0) | page top↑
| ホーム | 次ページ