速度を上げたいのですが
[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
よろしくお願いします。
» 1
以前、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
よろしくお願いします。
[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 に対応したテキストフレームのリストを作成する処理を行い、あとはそのタグネームで対応するテキストフレームを特定する形にするとか。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)