everyItem()をよく活用したら、処理スピードが向上しますが(過去記事)、本日では変なバグ(仕様?)に遭遇した。
発生条件:everyItem()方法(元の文字スタイル等が維持できるメリットがある)で文字を追加、かつ、文字流し込み後textFrameが溢れた
var doc = app.activeDocument; var tfs = doc.textFrames; var src = tfs.itemByName("src");//段落1a\r段落2b\r段落3c var dst1 = tfs.itemByName("dst1"); var dst2 = tfs.itemByName("dst2"); // // //-----通常の文字追加(プレーンテキストのみで、srcのスタイルを適用)----- //.parentStory: 溢れを考慮する dst1.parentStory.insertionPoints[-1].contents = src.contents; // // // //-----元の文字のスタイルを引き継ぐの場合----- //文字追加後**溢れが発生しない**(事前に分かれば)場合、everyItem()では問題ない src.paragraphs.everyItem().duplicate(LocationOptions.AT_END, dst2);//溢れなければOK src.characters.everyItem().duplicate(LocationOptions.AT_END, dst2);//溢れなければOK //文字追加後**溢れが発生する**場合 //**ダメ**な例 //段落複製:溢れた段落が逆転:段落1->3->2(溢れた3と2段落が逆転) src.paragraphs.everyItem().duplicate(LocationOptions.AT_END, dst2); //文字の複製:溢れた文字が逆転:文字m->m-1->m-2... src.characters.everyItem().duplicate(LocationOptions.AT_END, dst2); // //OKな例 //段落複製:溢れた段落が逆転しない src.paragraphs.itemByRange(0, -1).duplicate(LocationOptions.AT_END, dst2); //文字の複製:溢れた文字が逆転しない src.characters.itemByRange(0, -1).duplicate(LocationOptions.AT_END, dst2);
スクリーンショット: