InDesign脚本仅显示元数据首个作者,如何获取全部作者并弹窗展示?
解决Adobe脚本无法获取全部文档作者的问题
问题根源
你当前脚本仅能获取第一个作者,核心有两个错误:
- 错误使用了
app.activeDocument.metadataPreferences——这是Adobe应用的元数据偏好设置,并非当前文档的实际XMP元数据; - 误将
xmp.author当成多作者拼接字符串,但该属性仅返回第一个作者条目,文档的多作者实际存储为XMP标准的dc:creator数组。
修正后的脚本
// 加载XMP Toolkit库 ExternalObject.TI = ExternalObject.TI || {}; ExternalObject.TI["AdobeXMPScript"] = "XMPScript"; // 获取当前文档的原始XMP元数据并初始化XMPMeta对象 var xmpRawData = app.activeDocument.xmpMetadata.rawData; var xmp = new XMPMeta(xmpRawData); // 获取文档标题(DC命名空间下的title属性,为交替文本数组) var docTitle = xmp.getProperty(XMPConst.NS_DC, "title", XMPConst.PROP_ARRAY_ALT_TEXT); // 处理标题为数组的情况,取第一个有效条目 if (Array.isArray(docTitle)) { docTitle = docTitle.length > 0 ? docTitle[0] : "无标题"; } // 获取全部作者(DC命名空间下的creator属性,为有序数组) var creators = xmp.getProperty(XMPConst.NS_DC, "creator", XMPConst.PROP_ARRAY_ORDERED); // 处理无作者的情况 if (!creators || creators.length === 0) { creators = ["无作者信息"]; } // 构建弹窗消息内容 var message = "文档标题: " + docTitle + "\n作者列表:\n"; for (var i = 0; i < creators.length; i++) { message += "- " + creators[i] + "\n"; } // 弹窗展示结果 alert(message);
关键修改说明
- 改用
app.activeDocument.xmpMetadata获取文档自身的XMP数据,替代原有的应用偏好设置; - 通过
XMPMeta对象的getProperty方法,直接读取DC命名空间下的creator数组,无需手动分割字符串; - 增加了空值处理逻辑,避免无作者/标题时出现脚本错误。
内容的提问来源于stack exchange,提问作者SabineR
相关产品推荐
相关产品推荐

