Adobe 0046100128056 Scripting Guide - Page 86
Working with Text Frames, Linking text frames
UPC - 718659087562
View all Adobe 0046100128056 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 86 highlights
CHAPTER 6: Text and Type Working with Text Frames 86 var myDocument = app.documents.item(0); var myStory = myDocument.stories.item(0); //The following for loop will fail to format all of the paragraphs. for(var myParagraphCounter = 0; myParagraphCounter < myStory.paragraphs.length; myParagraphCounter ++){ if(myStory.paragraphs.item(myParagraphCounter).words.item(0).contents=="Delete"){ myStory.paragraphs.item(myParagraphCounter).remove(); } else{ myStory.paragraphs.item(myParagraphCounter).pointSize = 24; } } In the preceding example, some of the paragraphs are left unformatted. How does this happen? The loop in the script iterates through the paragraphs from the first paragraph in the story to the last. As it does so, it deletes paragraphs that begin with the word "Delete." When the script deletes the second paragraph, the third paragraph moves up to take its place. When the loop counter reaches 2, the script processes the paragraph that had been the fourth paragraph in the story; the original third paragraph is now the second paragraph and is skipped. To avoid this problem, iterate backward through the text objects, as shown in the following script. (We omitted the myGetBounds function from this listing; you can find it in "Creating a text frame" on page 71," or see the TextIterationRight tutorial script.) var myDocument = app.documents.item(0); var myStory = myDocument.stories.item(0); //The following for loop will format all of the paragraphs by iterating //backwards through the paragraphs in the story. for(var myParagraphCounter = myStory.paragraphs.length-1; myParagraphCounter >= 0; myParagraphCounter --){ if(myStory.paragraphs.item(myParagraphCounter).words.item(0).contents=="Delete"){ myStory.paragraphs.item(myParagraphCounter).remove(); } else{ myStory.paragraphs.item(myParagraphCounter).pointSize = 24; } } Working with Text Frames In the previous sections of this chapter, we concentrated on working with text stream objects; in this section, we focus on text frames, the page-layout items that contain text in an InDesign document. Linking text frames The nextTextFrame and previousTextFrame properties of a text frame are the keys to linking (or "threading") text frames in InDesign scripting. These properties correspond to the in port and out port on InDesign text frames, as shown in the following script fragment (for the complete script, see LinkTextFrames):