ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて

[6039]ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて | 投稿者:五月 貴 | 投稿日:2011/08/24(Wed) 15:57:28
いつもお世話になっております。
OS10.6.7 CS7.0.4を使用しています。
(ご指摘を受けて一部文章を修正させて頂きました)

依頼があった案件で,見出し段落の文字列の長さ(物理的寸法)に合わせたオブジェクトを割り付ける必要が出てきそうです。
ページ数が多く,アンカーオブジェクトを手作業で貼るのは現実的でないため,行長を文字列の長さから割り出した上で図形を描画し,さらに見出しと連動させるようなスクリプトは実現できそうでしょうか?
ご助言を頂ければ幸いです。
attached image
» 1
全部を聞くのはいかがなものかと思いますので、ヒントだけ。

endHorizontalOffsetを使えば段落中の最後の文字の位置を取得できます。
» 2
[6041]Re: ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて | 投稿者:五月 貴 | 投稿日:2011/08/24(Wed) 17:42:27
いき様

確かに「スクリプトを全部教えていただけますか」とも読めてしまう文章ですね。申し訳ありません。
後でそのメソッドを使ってどういう数値が出るかを試してみたいと思います。
長さが変わるのは中心の矩形部だけですので,座標さえ求められればあとは計算できそうです。
attached image
» 3
画像があがったのでようやくつかめました(あたまわるいので)

見出し段落の前後にそれぞれ端の三角部分だけの図をアンカーオブジェクトで入れ、
見出し本体に下線、打ち消し線、段落境界線でオモテ罫&塗りを入れる、
という方法でもいけそうですね。
図形を作成してしまうと修正たいへんそうですし。
» 4
>後でそのメソッドを使ってどういう数値が出るか

お~まちさんのブログの方法で座標値が得られます。
http://omachi.blog.ocn.ne.jp/preopen/2008/10/post_54ef.html
» 5
すいません、こういったパズルめいたものが大好きなので、しゃしゃり出てきました。

私なら、前の段落境界線で下半分の網掛けを、後の段落境界線で上下の罫線を入れます。前後のふたはアンカーオブジェクトで入れるのですが、前の部分は図のように作ります。参考までに。(すみません、外側のグレーは景です、紙色の塗りをわかりやすくしたつもりだったの)
attached image
» 6
[6045]Re: ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて | 投稿者:五月 貴 | 投稿日:2011/08/24(Wed) 18:59:09
皆様いろいろとありがとうございます。

(z-)様

実は数百ページの案件で,「修正ごとに柱を全部付け直す」という作業が必要だったため,修正が終わったら全ページの該当部分に必要な処理を施すスクリプトを毎回動作させていました。
「直しが大変」というのは図形の位置や寸法が変わってしまう事を危惧なさっているのだと思うのですが,修正して印字する前に「全ページ一括処理」をすれば対応できるかと思いまして,トピックの最初に書いた次第です。
ただ,後でお~まち様ご紹介の「ふた」以外は段落境界線で入れたほうが,図形再描画の手間は省けますね。

いき様
実はご紹介いただいたURLを見ていたところです。
これを使えば,確かに該当段落の1文字目と最後の文字+文字サイズで1行の幅は得られますね。

お~まち様
いつもオブジェクトモデル一覧を便利に利用させて頂いております。

見出しも頻出するため,ご提案の「前後のふた」を手作業で入れるのは前記の「印字直前全ページ処理」で自動的に対応しようかと思っています。
アンカーの入れ方はまた研究してみます。
(特にアンカーの自動挿入はデザイナーの習慣でよく見出しに指定されるため対応が必須になりそうです)

皆様書き込みのお時間を割いて頂いたこととアイデアをいろいろご提供頂いたことに関しましてお礼申し上げます。
ありがとうございました。
» 7
私も(z-)さんやお~まちさんのように対応すると思いますが、
選択テキストにガイドを引くスクリプトを一応紹介しておきます。

http://uni-factory.jp/data/guide_text.scpt.zip
» 8
>さらに見出しと連動させるようなスクリプトは
あー、ちょっと読み違えてました
「のちのちの文字数増減に連動する体裁」をスクリプトで作るのだと思っていました。

おさらい的にお伺いしたいんですが、
全体を1つのアンカーオブジェクトで作成したとして、見出し文字をその前面に出すのってどうやるんでしたっけ。。
» 9
[6048]Re: ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて | 投稿者:五月 貴 | 投稿日:2011/08/24(Wed) 21:28:09
(z-)様

>全体を1つのアンカーオブジェクトで作成したとして、見出し文字をその前面に出すのってどうやるんでしたっけ。。

以前手動オンリーで対応していた時に「重ね順をかえられない」という壁にぶつかりまして,アンカーオブジェクトは上に置いたまま,オブジェクトの透明効果を「オーバーレイ」などに設定して対応した記憶があります。
ただカラー物だと設定を変えなければいけないかもしれません。

余談ですがアンカーオブジェクト挿入のメソッドが見つかりません...。
» 10
>アンカーオブジェクト挿入のメソッド
この掲示板の過去ログで一度なり挙がったと思いますが(参照せず書きますが)
たとえばですが
insertionPoint.rectangles.add();
などで何かが生まれます。
過去ログでは、mgさんが外に作りおいたオブジェクトのduplicate()の返り値をアンカー付オブジェクトに指定していたような。
» 11
ありました
http://www2.rocketbbs.com/11/bbs.cgi?id=thats&mode=pickup&no=5478
既にインラインフレームとして存在する物なら、持って行きたい挿入点を引数にした move()や duplicate()が使える、ということですね。
» 12
[6053]Re: ある段落スタイルを割り当てた文字列の寸法を測るJavaScriptについて | 投稿者:五月 貴 | 投稿日:2011/08/26(Fri) 23:40:22
(z-)様

ありがとうございます。
大抵は決まった段落スタイルで使う事になると思いますので,各セクションの一番最初だけ手で当て込んで後はスクリプトを使うということになりそうでしょうか?
...と書いてから思ったのですが,アンカーオブジェクトって検索・置換で当て込めたような気も...。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア