2012-06-11 28 views
0

我想在文档中标记特定的内嵌图像,但是我只是卡在实际的标记部分。我已经有了如下:如何标记特定图像?

var myDoc = app.activeDocument; 
var myItems = myDoc.allPageItems; 
var foundInlineImages = Array(); 

// loop through the page and find all inline objects (images). 
// Name has to be Rectangle to exclude grouped objects. 

for(var i = 0, len = myItems.length; i < len; i++) 
{ 
    if((myItems[i].constructor.name=="Rectangle") && (myItems[i].parent instanceof Character)) 
    { 
     foundInlineImages.push(myItems[i]); 
    } 
} 


// encapsulate all array entries with [Image] tag 

for(var i = 0; i < foundInlineImages.length; i++) 
{ 
    // I need here something like foundInlineImages[i].changeTextPreferences.markupTag="Image"; 
    // unfortunatly this doesn't work ... 
} 

有人可以使我正确的语法封装在我的阵列中的每个找到的对象与(在这种情况下,“图像”)标签?

在此先感谢!

回答

1

@Wokoman - 要封装用XML标记的图像你说:

  • 首先为每个图像
  • 创建一个名为“图片”的XML标签创建一个XML元素从该标签
  • 然后插入每个图像插入到XML元素

您正在尝试更改Image对象的属性,但  Image  不具有属性  changeTextPreference.markupTag  (请参阅InDesign object model --> Image以供参考)。

  Application  具有这些属性  changeTextPreference.markupTag  (参见InDesign object model --> changeTextPreference供参考)。


因此,尝试了这一点( 这是未经测试,并基于P的 InDesignCS5_ScriptingGuide_JS 168):

var xmlImageTag = ""; 
var xmlImageElement = ""; 

for(var i = 0, len = foundInlineImages.length; i < len; i++) 
{ 
    // each Image tag created here 
    xmlImageTag = myDoc.xmlTags.add("Image"); 

    // each Image element created here, from the Image tag 
    xmlImageElement = myDoc.xmlElements.item(i).xmlElements.add(xmlImageTag); 

    // inserting each image into each new Image element 
    xmlImageElement.contents = foundInlineImages[i]; 
}