ご教授願います。
作業環境
MacOSX
InDesingCS4
インデザイン内にテキストボックスを複数(20〜30)配置しているのですが、その位置情報をまとめて取得し、その数値をテキスト化することは可能でしょうか。
取得後はXMLとして使用するらしく、50ページ近くを取得しなければなりません。
なにかよい方法があれば、よろしくお願いします。
[17552] いちじょーほ (2014/12/15 Mon 21:56)
> 取得後はXMLとして使用するらしく、50ページ近くを取得しなければなりません。
ご自身で行うわけではなく、別の担当の方が、XMLとして利用するということですよね?
> インデザイン内にテキストボックスを複数(20〜30)配置しているのですが、その位置情報をまとめて取得し、その数値をテキスト化することは可能でしょうか。
Scriptで出来ますが、「どのテキストフレームの座標なのか」を
どのように羅列したいのでしょうか?
[17553] 流星光輝 (2014/12/16 Tue 10:43) web
ご回答いただきありがとうございます。
> ご自身で行うわけではなく、別の担当の方が、XMLとして利用するということですよね?
はい、別の者が位置情報が必要になるので、取得してほしいといわれました。
> Scriptで出来ますが、「どのテキストフレームの座標なのか」を
> どのように羅列したいのでしょうか?
ページ内にある20〜30全てのテキストボックスの座標を知りたいです。
羅列ですが、ページ数・テキストボックス内文字・Y軸・X軸みたいな感じが理想です。
たとえば3ページ目の「0023」というテキストボックスだったら、
03-0023 y:00 x:00
こんな感じができればいいのですが...。
見当違いの返答をしていたらすみません。
知識があまりないので、このような回答しかできません。
よろしくお願いいたします。
[17557] いちじょーほ (2014/12/16 Tue 12:51)
> はい、別の者が位置情報が必要になるので、取得してほしいといわれました。
InDesignで使うわけではなく、どっか別の用途に使うんですよね(独り言
> ページ内にある20〜30全てのテキストボックスの座標を知りたいです。
> 羅列ですが、ページ数・テキストボックス内文字・Y軸・X軸みたいな感じが理想です。
> たとえば3ページ目の「0023」というテキストボックスだったら、
> 03-0023 y:00 x:00
> こんな感じができればいいのですが...。
なるほど、ページ数というのはドキュメントの先頭から何枚目でいいですかね?(ノンブルだと少し面倒なので)
テキストフレーム内の文字は、後で特定するためですかね。
contentsを取れば良いと思いますのでそうします。
座標はx,yの2つですね。左上としておきますね。
#target indesign
var doc=app.activeDocument;
var result=[]; // 情報を溜めておく所
for(var i=0;i<doc.pages.length;i++){
for(var j=0;j<doc.pages[i].textFrames.length;j++){
// テキストフレーム内の改行は〓で代用しておく
result.push(i+"-"+doc.pages[i].textFrames[j].contents.replace(/\r/g,"〓")+"\ty:"+doc.pages[i].textFrames[j].geometricBounds[0]+"\tx:"+doc.pages[i].textFrames[j].geometricBounds[1]);
}
}
// 取得した情報を新規ドキュメントに出力
var NewDoc=app.documents.add();
var NewDocFrm=NewDoc.pages[0].textFrames.add();
NewDocFrm.visibleBounds=[0,0,NewDoc.documentPreferences.pageHeight,NewDoc.documentPreferences.pageWidth];
NewDocFrm.parentStory.contents=result.join("\r"); // 溜めた情報を改行して出力
alert("出力しました。");
[17558] 流星光輝 (2014/12/16 Tue 13:22) web
ご回答いただきありがとうございます。
返事が遅くなってしまい申し訳ありませんでした。
このスクリプトで試してみたいと思います。
[17567] いちじょーほ (2014/12/18 Thu 20:09)
浅い知識のまま見解を記しておきます。どなたか詳しいかた<s>味方して</s>補足をお願いできれば助かります。
XMLはテキストフレーム内のストーリー構造をコード化する物で、テキストフレームそのものの生成についてはサポート外なのでは。インラインオブジェクトやアンカー付きオブジェクトとしてなら可能でしょうけども。
位置(座標ですね)自体は、たとえば1つだけ選択してJavascriptだと
app.selection[0].geometricBounds
などで取得できますが、環境設定>ルーラーの開始位置などへの留意が必要です。
また、どの順番で管理するのか(ID順、重なり順、座標順、etc.)をはっきりさせないと、たぶんグダグダにとっちらかった結果となる気がします。
どなたかフォローおねがいしますorz
[17555] (z-) (2014/12/16 Tue 11:35)
ご回答ありがとうございます。
流星光輝様のスクリプトを試してみたいと思います。
[17566] いちじょーほ (2014/12/18 Thu 20:06)