|
お世話になります。 以前、Indesign2.0からCS3へ移行するにあたり、 テキストフレームへのデータの流し込みの仕方について 質問させてもらいました。 結局、2.0のときのように1文では済まないようなので、 Indesignのファイルにある全てのオブジェクト(アイテム?) から同じ名前のついたテキストフレームを探し出し、 そこにデータを入れるという方法でPDFを作成することは できるようになりました。 が!!2.0のときより遅いのです... 毎回、全部を探しているからだと思うのですが、 これを違う方法にすることはできないかと 思いまして、質問させていただきました。
環境は Indesign CS3 VB6.0 です。 以下、変更したコードです。
For Each AllObj In Doc.AllPageItems If TypeName(AllObj) = "TextFrame" Then If AllObj.AssociatedXMLElement.MarkupTag.Name = Tag Then Set wTextFrame = AllObj Exit For End If End If Next
よろしくお願いします。
|
No.455 2007/12/11(Tue) 15:55:07
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
|
Re: 速度を上げたいのですが / 梅花藻 |
|
|
|
Mac OSX 10.4.9 InDesign CS2 4.0.5 のJavaScriptですが、
var objs = app.activeDocument.allPageItems; for (var i=0;i<objs.length;i++){ if (objs[i].constructor.name == "TextFrame"){//ココをなくせば半分程度時間短縮 if (objs[i].associatedXMLElement != null && objs[i].associatedXMLElement.markupTag.name == "タグ"){ var wTextFrame = objs[i]; break; } }//コレも }
テキストフレームか否かを調べるif文を外せば、半分程度の時間で抜けられるようです。
|
No.457 2007/12/12(Wed) 15:53:03
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3
|
|
Re: 速度を上げたいのですが / ようすけ |
|
|
No.463 2007/12/13(Thu) 17:37:38
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
|
|
Re: 速度を上げたいのですが / ようすけ |
|
|
|
ダメでしたぁ... 自分の環境(WindowsXP,VB6,IndesignCS3)では ほとんど変わらなかったです。
まだまだ、格闘中です。
ありがとうございました。
|
No.467 2007/12/14(Fri) 18:47:26
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
|
|
Re: 速度を上げたいのですが / 梅花藻 |
|
|
|
プログラムの中で何度もこのルーチンを呼び出して(あるいは、for文の入れ子のなかで何度も処理して)いるのならば、アルゴリズムの見直しをした方がよいと思います。
先に markupTag.name に対応したテキストフレームのリストを作成する処理を行い、あとはそのタグネームで対応するテキストフレームを特定する形にするとか。
|
No.468 2007/12/16(Sun) 09:45:04
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
|
|