リンクをクリップボードにコピー
コピー完了
スクリプトを使用して連結テキストフレーム中の表組の
ページごとの最終行を取得したいのですが、可能でしょうか?
>表組のページごとの最終行
これは、表がページをまたぐ場合がある、ということですよね。
横組み限定、テキストフレームのド派手な回転は不可、というフツウの状況であれば
・var ary = []; // 結果入れる用の配列
・対象ストーリーを変数に(a)
・a.insertionPoints[0].parentTextFrames[0].documentOffset を変数に(b)
・var c = -100; // 比較用Y座標の初期値
・a.tablesでループ(i)
・tables[i].rowsでループ(j)
・a.tables[i].rows[j].cells[0].insertionPoints[0] を変数に(d)
・d.parentTextFrames[0].parentPage.documentOffset を変数に(e)
・if(e != b {
b = e; // ページ番号を更新
c = -100; // Y座標比較用変数をリセット
} else {
if(d.baseline > c) {...
リンクをクリップボードにコピー
コピー完了
>表組のページごとの最終行
これは、表がページをまたぐ場合がある、ということですよね。
横組み限定、テキストフレームのド派手な回転は不可、というフツウの状況であれば
・var ary = []; // 結果入れる用の配列
・対象ストーリーを変数に(a)
・a.insertionPoints[0].parentTextFrames[0].documentOffset を変数に(b)
・var c = -100; // 比較用Y座標の初期値
・a.tablesでループ(i)
・tables[i].rowsでループ(j)
・a.tables[i].rows[j].cells[0].insertionPoints[0] を変数に(d)
・d.parentTextFrames[0].parentPage.documentOffset を変数に(e)
・if(e != b {
b = e; // ページ番号を更新
c = -100; // Y座標比較用変数をリセット
} else {
if(d.baseline > c) {
ary[e] = a.tables[i].rows[j]; // 配列の e 番目として行を格納
c = d.baseline; // Y座標比較用変数を更新
}
} // j
} // i
…みたいな感じでどうでしょう。
(回答を、書ける人向けにしておきました)
各行の先頭セルの先頭挿入点のベースラインでY座標を比較していく、という内容です。
意地悪なベースラインシフトでも仕込まれてない限りはいけると思うのですが。
コードが完成したらぜひシェアしてくださいっ
リンクをクリップボードにコピー
コピー完了
ありがとうございます。
とりあえず↓の様な形で目的は果たせました。
リンクをクリップボードにコピー
コピー完了
可能です。言語の指定がないのでコードを提示せず、言葉だけで説明します。
まず、対象の表のセル中のテキストを取得します。連結されたセルがなければ、行単位でループしていけばいいのですが、連結されたセルがあるとちょっと厄介ですね。
テキストを取得出来たら、そのテキストから親のテキストフレームを取得することができます。また、テキストの座標位置も取得できます。
親のテキストフレームを取得したら、その親のページを取得することができます。
仮に行単位でループしていた場合は親のページが変わったところが切れ目になります。
今回はページの最終行ということなので、表の最後から逆順に回してページを取得していき、ページが変わった行があればそれがそのページの最終行と判断できます。
リンクをクリップボードにコピー
コピー完了
あああそうだ、ループ中に親ページ取得だけで済むんでした(おれはばかだ)。
リンクをクリップボードにコピー
コピー完了
親ページの方法を最初試していたのですが、うまくできずに質問しました。
上記スクリプトのpp、pp2がずっと最初のページしか示さないです。
何か間違っているのでしょうか?
INDD2024です。
リンクをクリップボードにコピー
コピー完了
横から失礼して…
Text.parent.parent.parent が原因ですね。
Text → Cell → Table → TextFrame となるのですが、この場合は連結された先頭のテキストフレームが返るんです。
Text.parentTextFrames[0] とすれば、そのセル内テキストが入っているテキストフレームを取得できます。
リンクをクリップボードにコピー
コピー完了
parentTextFramesの戻り値は違うんですね。ありがとうございます。
以下に修正しました。
新しいアドビコミュニティで、さらに多くのインスピレーション、イベント、リソースを見つけましょう
今すぐ検索