DTP駆け込み寺
  1. [17552] 位置情報を取得したい!! いちじょーほ 2014/12/15 21:56
    1. [17553] Re: 位置情報を取得したい!! 流星光輝 2014/12/16 10:43
      1. [17557] Re^2: 位置情報を取得したい!! いちじょーほ 2014/12/16 12:51
        1. [17558] Re^3: 位置情報を取得したい!! 流星光輝 2014/12/16 13:22
          1. [17567] Re^4: 位置情報を取得したい!! いちじょーほ 2014/12/18 20:09
    2. [17555] Re: 位置情報を取得したい!! (z-) 2014/12/16 11:35
      1. [17566] Re^2: 位置情報を取得したい!! いちじょーほ 2014/12/18 20:06

[ 返信 ]

位置情報を取得したい!!

ご教授願います。

作業環境
MacOSX
InDesingCS4

インデザイン内にテキストボックスを複数(20〜30)配置しているのですが、その位置情報をまとめて取得し、その数値をテキスト化することは可能でしょうか。
取得後はXMLとして使用するらしく、50ページ近くを取得しなければなりません。
なにかよい方法があれば、よろしくお願いします。

[17552] いちじょーほ (2014/12/15 Mon 21:56)

[ 返信 ]


Re: 位置情報を取得したい!!

> 取得後はXMLとして使用するらしく、50ページ近くを取得しなければなりません。

ご自身で行うわけではなく、別の担当の方が、XMLとして利用するということですよね?

> インデザイン内にテキストボックスを複数(20〜30)配置しているのですが、その位置情報をまとめて取得し、その数値をテキスト化することは可能でしょうか。

Scriptで出来ますが、「どのテキストフレームの座標なのか」を
どのように羅列したいのでしょうか?

[17553] 流星光輝 (2014/12/16 Tue 10:43) web

[ 返信 ]


Re^2: 位置情報を取得したい!!

ご回答いただきありがとうございます。

> ご自身で行うわけではなく、別の担当の方が、XMLとして利用するということですよね?

はい、別の者が位置情報が必要になるので、取得してほしいといわれました。

> Scriptで出来ますが、「どのテキストフレームの座標なのか」を
> どのように羅列したいのでしょうか?

ページ内にある20〜30全てのテキストボックスの座標を知りたいです。
羅列ですが、ページ数・テキストボックス内文字・Y軸・X軸みたいな感じが理想です。
たとえば3ページ目の「0023」というテキストボックスだったら、
03-0023 y:00 x:00
こんな感じができればいいのですが...。

見当違いの返答をしていたらすみません。
知識があまりないので、このような回答しかできません。

よろしくお願いいたします。

[17557] いちじょーほ (2014/12/16 Tue 12:51)

[ 返信 ]


Re^3: 位置情報を取得したい!!

> はい、別の者が位置情報が必要になるので、取得してほしいといわれました。

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

[ 返信 ]


Re^4: 位置情報を取得したい!!

ご回答いただきありがとうございます。
返事が遅くなってしまい申し訳ありませんでした。
このスクリプトで試してみたいと思います。

[17567] いちじょーほ (2014/12/18 Thu 20:09)

[ 返信 ]


Re: 位置情報を取得したい!!

浅い知識のまま見解を記しておきます。どなたか詳しいかた<s>味方して</s>補足をお願いできれば助かります。

XMLはテキストフレーム内のストーリー構造をコード化する物で、テキストフレームそのものの生成についてはサポート外なのでは。インラインオブジェクトやアンカー付きオブジェクトとしてなら可能でしょうけども。

位置(座標ですね)自体は、たとえば1つだけ選択してJavascriptだと
app.selection[0].geometricBounds
などで取得できますが、環境設定>ルーラーの開始位置などへの留意が必要です。
また、どの順番で管理するのか(ID順、重なり順、座標順、etc.)をはっきりさせないと、たぶんグダグダにとっちらかった結果となる気がします。

どなたかフォローおねがいしますorz

[17555] (z-) (2014/12/16 Tue 11:35)

[ 返信 ]


Re^2: 位置情報を取得したい!!

ご回答ありがとうございます。

流星光輝様のスクリプトを試してみたいと思います。

[17566] いちじょーほ (2014/12/18 Thu 20:06)