速度を上げたいのですが
[455]速度を上げたいのですが |
投稿者:ようすけ |
投稿日:2007/12/11(Tue) 15:55:07
お世話になります。
以前、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
よろしくお願いします。
以前、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
よろしくお願いします。
» 1
[457]Re: 速度を上げたいのですが |
投稿者:梅花藻 |
投稿日:2007/12/12(Wed) 15:53:03
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文を外せば、半分程度の時間で抜けられるようです。
» 2
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文を外せば、半分程度の時間で抜けられるようです。
[463]Re: 速度を上げたいのですが |
投稿者:ようすけ |
投稿日:2007/12/13(Thu) 17:37:38
ありがとうございます!!
早速試してみます。
» 3
早速試してみます。
[467]Re: 速度を上げたいのですが |
投稿者:ようすけ |
投稿日:2007/12/14(Fri) 18:47:26
» 4
[468]Re: 速度を上げたいのですが |
投稿者:梅花藻 |
投稿日:2007/12/16(Sun) 09:45:04
プログラムの中で何度もこのルーチンを呼び出して(あるいは、for文の入れ子のなかで何度も処理して)いるのならば、アルゴリズムの見直しをした方がよいと思います。
先に markupTag.name に対応したテキストフレームのリストを作成する処理を行い、あとはそのタグネームで対応するテキストフレームを特定する形にするとか。
先に markupTag.name に対応したテキストフレームのリストを作成する処理を行い、あとはそのタグネームで対応するテキストフレームを特定する形にするとか。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)