indesignでJavaScript メモ書き
indesignでJavaScript メモ書き。

基本的なことをメモ書き(07.09.21更新)



●ラベルつきオブジェクトを選択するには
var preTumeG = docObj.pageItems.item("titlegroup");
preTumeG.select();
var preTumeGSelecton = app.selection[0];


●オブジェクトを削除するには
preTumeGSelecton.remove() ;


●ライブラリの読み込み&登録されたアイテムの配置は
var docObj = app.activeDocument;
var LibName = "ライブラリ.indl"
var myLibraries = app.libraries;
if (myLibraries.length == 0){
alert(LibName + "を開いてください。");
return;
}
try{
var myLib = myLibraries.item(LibName);
}
catch(e){
alert(e);
alert(LibName + "を開いてください。");
return;
}
//ライブラリ内のアイテム選択
var myAsset = myLib.assets.item("アイテム名");
var myObjArray = myAsset.placeAsset(docObj);
//ページ内に配置
var myObjGroup = myObjArray[0];
//配置したオブジェクトを確定させる
app.selection = myObjGroup.parent;


●テキストファイルを1行ずつ読み込むには
filename = File.openDialog("テキストファイルを指定してください");
if (filename) {
fileObj = new File(filename);
//ファイルを読み込みモードで開く
flag = fileObj.open("r");
if (flag == true) {
//テキストの終わりまで{}の処理を続ける
while (!fileObj.eof) {
//ファイルを1行だけ読み込む
line = fileObj.readln();
//空行(改行のみ)じゃなかったら
if (line != "") {
ここに処理を書く
}
}
}
}


●画像を貼り込むには
txtObj = pageObj[0].textFrames.add();
txtObj.visibleBounds = ["10mm","10mm","100mm","100mm"];
txtObj.contentType = ContentType.graphicType;
imageFile = "フルパス";
txtObj.place(imageFile);
//ボックスにフィット(変形)
txtObj.fit(FitOptions.centerContent);
}


●画像を相対的に移動させるには
var mydocument = app.activeDocument;
var myobj = mydocument.pageItems.item("hoge");
myobj.select();
myobj.place("System:Users:yokota:Desktop:A01_P1.eps");
//画像を現在の位置から相対的に移動させる
myobj.graphics[0].move("by",["5mm","10mm"])


●ページのルーラーを変更するには
//ドキュメントのrulerOriginを保存
var oldRular = docObj.viewPreferences.rulerOrigin ;
//ドキュメントのrulerOriginをページに変更(10進法で指定)
docObj.viewPreferences.rulerOrigin = 1380143983 ;//ページ
docObj.viewPreferences.rulerOrigin = 1380143984 ;//ノド元
docObj.viewPreferences.rulerOrigin = 1380143983 ;//スプレッド


●オブジェクトを絶対値で移動させるには
move([x,y]);//"to"や"by"はつけないほうがいいみたい


●グループされたオブジェクトの中のオブジェクトを選択するには
//グループ化されたアイテムを選択しておく
var nexTumeGSelecton = app.selection[0];
//pageItemsで入れ子の中に潜っていける
nexTumeGSelecton.pageItems.item("hoge").select();


<以下07.07.18追記>


●フォルダ中のファイルを一括取得
var folderObj = Folder.selectDialog("一覧にしたい画像のあるフォルダを選択してください") ;
var fileListEPS = folderObj.getFiles("*.eps") ; //EPSファイルを配列化


●Folder.selectDialogなどで取得したものをデコード(OSXだと濁点とか文字化け)
//取得したファイルをデコード
var capKakou = pictureList[p] ; //pictureListにはエンコードされたフルパスが入っているとする
var decodePath = decodeURI(capKakou)
var capKakouArray = decodePath.split("/") ;
var capContents = capKakouArray.pop() ; //配列の最後を取得


●マスターアイテムのオーバーライド
var myPage = app.activeDocument.pages[i]; //for文で回すことを考えて[i]のまま
//アイテムのオーバーライド処理(ラベルの有無判断付き)
var myObjects = myPage.masterPageItems
for (h = 0 ; h if (myObjects[h].label != "") { //ラベルがついてなかったら
//アイテムをオーバーライドする
myObjects[h].override(myPage);
}
}


●XMLからキーを取得しラインのカラーを変更
//XMLタグからコマのテーマカラーのキーを取得する
var komaColor = docObj.xmlElements.item("Root").xmlElements.item("record").xmlElements.item("EL地方").contents ;
komaObj.pageItems.item("sen").select() ;
var frameStrokeColor = app.selection[0] ;
frameStrokeColor.strokeColor = docObj.swatches.item(komaColor) ;


<以下07.09.20追記>


●段落スタイルと文字スタイルを読み込む
docObj.importStyles(ImportFormat.paragraphStylesFormat, myStyleFile);
docObj.importStyles(ImportFormat.characterStylesFormat, myStyleFile);


●テキストフレーム内天地センター
myItems.textFramePreferences.verticalJustification = VerticalJustification.centerAlign


●特定の文字に特定のスタイルを適用
//こむぎさんの「正規表現検索スタイル適用 (履歴付き)2006.08.26版」を
//一部(というかほとんど…)利用させていただいています
//感謝感謝
function applieStyleAtMatchString()
{
myFrame = app.selection[0]
var regexpArray = ["「","『","【","(","[","{","‘","“","〈","《","〔"] ; //配列化
// 選択中のTextFrameの行の集合を取り出す
myParagraphs = myFrame.paragraphs;
// 各行を処理対象に
for(j = 0; j < myParagraphs.length; j++)
{
// 選択中のTextFrameから1行テキストを取り出し
txtObj = myParagraphs.item(j).contents;
// 行末が改行だったら、処理対象行から改行を除く
// これにより、行末からのインデックスを使うと一つずれるので注意
if(escape(txtObj.substr(txtObj.length - 1, 1)) == "%0D")
{
txtObj = myParagraphs.item(j).contents.substr(0, txtObj.length - 1);
}
for (r = 0 ; r startPos = txtObj.indexOf(regexpArray[r]) ;
while (startPos != -1) {
//マッチした文字の数
matchStringLen = RegExp.lastMatch.length;
//マッチした文字列にスタイルを適用
myFrame.paragraphs.item(j).characters.itemByRange(startPos, startPos + matchStringLen - 1).appliedCharacterStyle = newStyle;
// マッチした文字列に同じものがあるとindexOf()が機能しないので
// マッチした次の文字を検索開始位置にする
startPos = txtObj.indexOf(regexpArray[r], startPos+matchStringLen) ;
}
}
}
}


●貼り込む画像数と1ページあたりに貼り込まれる数からページ数を計算
var EPSLength = 10 ; //総数
var komakazu = 10 ; //1ページあたりの数
if (EPSLength % komakazu != 0) { //余りがあれば(割り切れなければ)
var allPage = Math.ceil(EPSLength / komakazu) ; //総ページ数(小数点以下切り上げ。.0も切り上げるから注意)
} else {
var allPage = (EPSLength / komakazu) ;
}


<以下07.09.21追記>


●テキストファイルの中身を一気に取得(行数カウントも含む)
//テキストを一気に読み込むついでに行数も数えておく
var regObj = new RegExp(LF,"g"); //正規表現で目的の文字を探す
var fileObj = new File(fileListTEXT[t]);
var flag = fileObj.open("r") ; //ファイルを読み込みモードで開く
if (flag == true) {
var lineAll = fileObj.read() ; //ファイル内容を一度に読み込む
var LFCount = lineAll.match(regObj) ;
//今回のコメント数
if (LFCount == null) { //1行しかなかったら
var comment = 1; //LFの数を数える(最終行に改行がないため+1する)
} else {
var comment = LFCount.length + 1; //LFの数を数える(最終行に改行がないため+1する)
}
}
fileObj.close();
【2007/09/20 17:05 】 | JavaScript | コメント(0) | トラックバック(0) | page top↑
InDesign Conference Tokyo 2007行ってきたよ
InDesign雑記。

一応有料イベントなのでさらっと感想。
率直に書いているのでクレームは言わないで(笑)

『PDFワークフローの極意』
手前味噌すぎないか?
最先端が最善策とは限らないだろ。
CS2のトラブルがCS3でなくなりました、なんてあり得ねー。
そもそも弊社に透明機能を使えるような奴、いねぇ(嘆)
まーうちらのような零細は相手先の都合か印刷所の都合に合わせざるを得ないから、様子見だな。
タメにはなったけど。


『InDesign自動化プラグイン利用の現状と今後』
ProDIXは躊躇うけどセッション自体がタメになった。
Xcodeとかに言及するとはね。
ま、興味はあるけど、自分でちゃんとしたものを作る気はないな。
今からC言語系学ぶのは正直しんどいでしょー。
プロフィールド製品としては非定型組版のやつが面白いな。
目の付け所がいいね。
でも高そう〜。
あ、得意先の方とばったり遭遇。
彼の会社はProDIX使ってるからなぁ。
今度デモ見せてもらおうか。


『もうひとつのInDesign/スクリプトのススメ』
お誕生日おめでとうございます。
面白いセッションだった。
すごいエネルギッシュ。
CS3がほしくなりました(笑)
Rubyももちっと真剣に取り組んでみようかしら?
ちなみに某氏もお見掛けしましたよ( ̄∀ ̄)


『共同作業としての大型カタログ制作(以下省略)』
とりあえず話が長い。
自動組版という言葉に対する感想は同じ。
全部自動なんて現実にはなかなかありえない話だから部分自動を目指そうという観点。
ま、いま出向先で組んでるのは100%自動も可能だけどね。
弊社もカタログ製作で失敗した経験があるんだが、どこら辺に問題があったかおぼろ気ながらわかった。
でもカタログオンリーな会社には入るつもりはありませんのであしからず。
私はオペ引退したいのでね。


『InDesignとDBが完全シンクロする新しい組版の世界』
DB絡めると幸せになるらしい。
しかし、そもそもDB使うような仕事がなかったりする。
でもスクリプトを組む上でのヒントを得た気がする。


『アドビ段落コンポーザーの詳細説明』
ごめんよ、デフォルトの段落コンポーザ。
私は君を誤解していた。
欧文組版のときも君をすっかり失念していた。
単数行で組んだらそりゃ美しくないわな。
なるほど、いきさんも言っていたが使い分ければ幸せになれるわけか。
ちなみにナットさん、日本語上手、オチのある会話もばっちり。
「わりと」を多様するあたり実に日本人の曖昧さを習得していらっしゃる。

まとめ。
「ワークフローを変えなければInDesignの意味が無い」
アプリ変えただけで仕事がスムーズにいくなんてあり得ない。
InDesignという「道具」をいかに効率よく使用してヒューマンエラーを減らしていくか、が肝かと。
そういう意味でせうぞーさんのInDesignファイルを残さない手法は興味深いね。

「PDFを中心にしたワークフローで無駄な工程を省ける」
まだ私の中でPDF万歳とまで信用できてないんだけど、PDFをうまく使うことでコストダウン(建前)、効率よく(本音、つまり労働時間短縮!)することができるのはいいことだと思う。
AdobeさんはPostScriptを切り捨てようとしつつあるみたいだしね。


こんな感じ。
いい刺激を受けました。
モリサワのキャンデーももらったしね。
【2007/09/14 12:01 】 | InDesign雑記 | コメント(3) | トラックバック(1) | page top↑
明日はThe InDesign Conference Tokyo 2007
雑談。

明日はThe InDesign Conference Tokyo 2007に出没します。
メイン目的は市川せうぞーさんのお話。
でもせっかくなので一日うろうろしてきます。
会場で気弱そうな眼鏡な人がいたら、おそらく私です。
見つけても特に特典はありませんが。
【2007/09/12 20:58 】 | 雑談 | コメント(2) | トラックバック(0) | page top↑
生きてます
愚痴。

出向先にて細々と生活しています。
暇です、ええ、かなり暇です。
左遷…でしょうか?
いや、出向後2日目に上司から「早く帰ってこい」と指示があったから違うか。

そんなことは置いといて。
出向先では自社制作データをNASと呼ばれるファイルサーバに保存しているのですが。
こいつがかなり反抗的。
後輩が保存したファイルを私が開くと「画像が更新されています」。
おい、待て。
私が保存したファイルを後輩が開くと「「画像が更新されています」。
だから、待て。
どーーーーーして同じファイルをリンクしているにも関わらず「画像が更新されています」と言われないかんのよ。
ひどいときには更新を試みると「ファイルが見つかりません」。
私はお前のやる気が見つかりません。
一回サーバとの接続を解除すると何事もなかったかのように振る舞うからさらに腹が立つ。

そしてさらに腹が立つのは。
このNASくんの管理者は私の上司である「死ねや」が口癖のK氏。
不具合を申告するたびに「再起動しろや」。
おい、待て。
再起動直後から「画像が更新されています」言われますが?
K氏「再起動するしかないねん」
おい、こら、待ちやがれ。
なんだ?再起動は魔法の呪文だと思っているのか?そーなのか?
あんたの頭を再起動してくれ、ついでに「死ねや」もやめてくれ。

当事者しかわからない苦悩を傍目から批評するのってよくないと思うよ。


※追記 07.09.12 19:00

どうやらNASうんぬんじゃなくてNASのOSが原因との情報。
というかね、OS9もいけないんじゃないかと思うのね。
いや、やっぱ設定した人間に問題が…。
なにはともあれ、早いとこ改善してほしいなぁ。
【2007/09/12 16:48 】 | 愚痴 | コメント(0) | トラックバック(0) | page top↑
| ホーム |