【问题标题】:ExtendScript Illustrator Placed Item NameExtendScript Illustrator 放置的项目名称
【发布时间】:2016-01-21 12:29:55
【问题描述】:

我正在尝试在 Illustrator 中获取放置项目的名称。

这是一个硬编码放置的项目,以防我在我的画板上选择了一个

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

通常我会像这样得到文件的名称:

myItem.file.name

但我想获取链接(文件路径)断开的放置项目的名称。

即使链接断开,illustrator 仍然可以读取它的名称,正如您在放置的项目窗口中看到的那样:

那么我怎样才能访问该名称?

【问题讨论】:

  • 我看不到方法,我猜它不是 AI 对象模型的一部分,我可能错了,我不太擅长 AI 脚本。如果你对 RegEx 很熟悉,你可以试试这个:在你的脚本中首先保存一个副本 ai 文件,然后删除你的选择,保存另一个 ai 文件,然后将它们作为文件对象打开并查找列出链接文件的信息(在您的文件中搜索“filePath”),隔离所有链接的文件字符串,将它们放入数组中,比较两个数组并查看第二个数组中缺少哪个元素。然后恢复到文件的早期阶段。虽然非常hack-ish…

标签: javascript object adobe adobe-illustrator extendscript


【解决方案1】:

供您参考 XMPString 将帮助您, 这个 jsx sn-p 将找到所有断开链接的文件路径,而不是一个 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);
    }
  };
}

【讨论】:

  • 哇,这非常接近我想要的。即使我不熟悉 XMPString 和 xpath() 方法,它也会以 xml 格式返回损坏的链接 :) 现在我怎样才能从 xml 中获取文件名? .. 是否可以将 doc.XMPTring 存储在数组而不是 XML 中?
  • 你用的是什么版本?如果 CC 或更高版本,请将 xpath 表达式更改为 x.xpath('//xmpMM:Manifest//stRef:filePath') 。并再次运行。你需要文件名而不是文件路径吗?使用 File(link_path).name ,您可以简单地推送任何数组..
  • 是的,我正在使用 CC,但我通过将数组循环一半长度解决了这个问题。这很好用,因为每个断开的链接似乎都被实施了两次。我通过在实际路径上使用 .split() 函数并选择拆分路径字符串的最后一部分来检索文件名。非常感谢。
  • 可能比它需要的更复杂,但我懒得保持这种方式。永远不要改变正在运行的系统:D
  • 还有一个问题。这是返回每个链接的文件还是只返回损坏的文件?
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 2016-05-02
  • 1970-01-01
  • 2021-09-17
  • 2011-04-30
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多