Hi all,
Is it possible to apply [None] Swatch/Color to a TextFrame contents ?
I currently use this:
var vNoneColor = app.swatches.itemByName("None");
for (var iText=0; iText < vTextFrame.texts.length ; iText++)
{
var vText = vTextFrame.texts.item(iText);
alert(vText.contents);
vText.fillColor = vNoneColor
}
or maybe create my own Color but it's not possible to change transparency.
Thanks.
Regards,
Pierre RAFFA.
Harbs. wrote:
You should really use the locale independent name:
var noColor = doc.swatches.itemByName("$ID/kNoneName");
I'm afraid this is no correct in the specific case of swatches—and the code above should not work in non-EN languages.
Whatever the locale the None swatch has always the internal name "None"—even if it is localized in the Swatch panel as [None], [Sans], [Ohne], etc. (depending on the locale). This fact is very specific to the Swatches collection, which basically uses None, Black, Paper and Registration as unique reserved names in a locale-independent way. (By contrast, the reserved names of the styles collection, including None, are locale-dependent!)
As a consequence, the regular way to point out to the None swatch in any language, is:
var noneSwatch = myDoc.swatches.itemByName('None');
alert( noneSwatch.isValid ); // should always be true
alert( noneSwatch.name ); // should always be"None"
Likewise, the shortcut to apply this swatch, in any language, is:
myObj.fillColor = "None";
whereas myObj.fillColor = "$ID/kNoneName" will fail in non-EN locales because this actually means:
myObj.fillColor = app.translateKeyString("$ID/kNoneName");
i. e.:
myObj.fillColor = "Ohne"; // in German => error
myObj.fillColor = "Sans"; // in French => error
By contrast, name-based access to special object styles can be done locale-dependently, and should be done locale-independently:
var noneStyle = myDoc.objectStyles.itemByName('$ID/[None]'); // OK
@+
Marc
North America
Europe, Middle East and Africa
Asia Pacific