2016-01-20 104 views
0

我想要在Illustrator中獲得放置物品的名稱。ExtendScript Illustrator放置的物品名稱

這是一個硬編碼放置物品,萬一我有一個選擇我的畫板

var myItem = app.activeDocument.selection[0]; 

通常我會得到的文件的名字,象這樣:

myItem.file.name 

但我想要獲取鏈接(文件路徑)被破壞的已放置項目的名稱。

即使鏈路斷開時,插畫仍然可以讀取它的名字,你可以在放置物品窗口中看到:

enter image description here

所以,我怎麼能訪問這個名字?

+0

我不明白的方式,我想這不是AI對象模型的一部分,我可能是錯的,我不是AI腳本真的不錯。 如果你對RegEx有好處,你可以試試這個:在你的腳本中首先保存一個副本ai文件,然後刪除你的選擇,保存另一個ai文件,然後打開它們作爲文件對象並查找列出鏈接文件的信息(搜索文件中的「filePath」),隔離所有鏈接的文件字符串,將它們放入數組中,比較兩個數組並查看第二個數組中缺少哪個元素。然後恢復到文件的早期階段。非常黑客 - 雖然... – mdomino

回答

1

供您參考XMPString將幫助您, 此jsx片段將查找斷開鏈接的所有文件路徑,而不是SELECTED項目。

#target "Illustrator" 
 
var doc = app.activeDocument; 
 
$.writeln(doc.name); 
 
var x = new XML(doc.XMPString); 
 
var m = x.xpath('//stRef:filePath'); 
 
if (m !== '') { 
 
    for (var i=0, len=m.length(); i < len ; i++) { 
 
    var link_path = m[i]; 
 
    if (File(link_path).exists === false) { 
 
     $.writeln(File(link_path).fsName); 
 
    } 
 
    }; 
 
}

+0

哇,這是非常接近我想要的。儘管我不熟悉XMPString和xpath()方法,但它會以xml格式返回斷開的鏈接:) 現在,我該如何才能將他的文件名從xml中取出? ..是否有可能將doc.XMPTring存儲在數組中而不是XML中? –

+0

還有,如果我有兩個斷開的鏈接,它會返回一個文件兩次... –

+0

您使用的是什麼版本?如果CC或更高版本,請將xpath表達式更改爲'x.xpath('// xMMMM:Manifest // stRef:filePath')'。並再次運行。你需要文件名而不是文件路徑嗎?使用'文件(link_path).name',你可以簡單地推任何數組.. – milligramme

相關問題