Как пометить определенные изображения?

Я хотел бы пометить определенные встроенные изображения в своем документе, но я застрял на фактической части тегов. У меня уже есть следующее:

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 ...
}

Может ли кто-нибудь привести меня к правильному синтаксису для инкапсуляции каждого найденного объекта в моем массиве с помощью тега (в данном случае «изображение»)?

Заранее спасибо !


person Wokoman    schedule 11.06.2012    source источник


Ответы (1)


@Wokoman -- Чтобы инкапсулировать изображение с тегом XML, как вы говорите:

  • сначала создайте тег XML с именем «Изображение» для каждого изображения
  • создать элемент XML из этого тега
  • затем вставьте каждое изображение в элемент XML

Вы пытаетесь изменить свойство объекта Image, но Image не имеет свойств changeTextPreference.markupTag (см. InDesign объектная модель --> изображение для справки).

Application обладает следующими свойствами changeTextPreference.markupTag (см. объектная модель InDesign --> changeTextPreference для справки).


Итак, попробуйте это (это не проверено и основано на стр. 168 InDesignCS5_ScriptingGuide_JS):

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];
}
person Ian Campbell    schedule 08.08.2012