Javascript 需要XMP对象的setProperty语法

Javascript 需要XMP对象的setProperty语法,javascript,adobe,adobe-indesign,extendscript,xmp,Javascript,Adobe,Adobe Indesign,Extendscript,Xmp,我正在随机生成DocumentID和InstanceID,但在为xmp对象设置属性DocumentID和InstanceID时遇到了问题 如何将生成的DocumentID和InstanceID设置为我的allXMP var xmpFile=new xmpFile(linkFilepath,XMPConst.FILE\u INDESIGN,XMPConst.OPEN\u用于更新); var allXMP=xmpFile.getXMP(); //从外部链接XMP检索值。 var documentID

我正在随机生成
DocumentID
InstanceID
,但在为xmp对象设置属性
DocumentID
InstanceID
时遇到了问题

如何将生成的
DocumentID
InstanceID
设置为我的
allXMP

var xmpFile=new xmpFile(linkFilepath,XMPConst.FILE\u INDESIGN,XMPConst.OPEN\u用于更新);
var allXMP=xmpFile.getXMP();
//从外部链接XMP检索值。
var documentID=allXMP.getProperty(XMPConst.NS_XMP_MM,'documentID',XMPConst.STRING);
var instanceID=allXMP.getProperty(XMPConst.NS_XMP_MM,'instanceID',XMPConst.STRING);
documentID=randomString(32);
instanceID=randomString(32);
// ???? 在这里,我需要将DocumentID和InstanceID设置为allXMP
如果(xmpFile.canPutXMP(allXMP)){
xmpFile.putXMP(allXMP);
xmpFile.closeFile(XMPConst.CLOSE\u安全更新);
} 
您可以使用AdobeXMPScript库中的方法来创建和设置
DocumentID
InstanceID

下面是几个用于添加
DocumentID
InstanceID
的帮助函数

//注意:此函数仅适用于macOS
函数generateUid(){
var cmd='do shell脚本“uuidgen | tr-d”&引用形式为“-”;
返回app.doScript(cmd,ScriptLanguage.applescriptLanguage);
}
//添加XMP属性和值。
函数addXmpProperty和Value(文件路径、xmpProperty、xmpValue){
var xmpFile=new xmpFile(文件路径,XMPConst.FILE\u未知,XMPConst.OPEN\u用于更新);
var allXMP=xmpFile.getXMP();
allXMP.setProperty(XMPConst.NS_XMP_MM,xmppproperty,xmpValue);
if(xmpFile.canPutXMP(allXMP)){
xmpFile.putXMP(allXMP);
}
xmpFile.closeFile(XMPConst.CLOSE\u安全更新);
//用于测试目的。。。。
警报('已添加:'+xmpProperty+'\n'+
'值:'+xmpValue+'\n\n'+
'路径:'+filePath',更新的XMP',false);
}
要添加一个
instanceID
,请按如下方式调用
addxmpproperty和value
函数:

//linkFilepath`参数应该是要更新的链接的文件路径
addXmpPropertyAndValue(linkFilepath,'InstanceID','xmp.iid:'+GenerateUid());
要添加
DocumentID
请按如下方式调用
addXmpPropertyAndValue
函数:

//linkFilepath`参数应该是要更新的链接的文件路径
addXmpPropertyAndValue(linkFilepath,'DocumentID',xmp.did:'+GenerateUid());

附加说明:

DocumentID
InstanceID
生成值时,准则规定:

应该保证ID是全局唯一的(在实践中,这意味着碰撞的可能性非常小,实际上是不可能的)。通常使用128位或144位数字,编码为十六进制字符串

摘录(以上)见(PDF)第19页

遗憾的是,ExtendScript没有提供生成全局唯一标识符(GUID)的内置功能。但是,macOS确实包含了一个用于 生成唯一标识符(UUID/GUID)

助手函数(如上所示):

函数generateuid(){
var cmd='do shell脚本“uuidgen | tr-d”&引用形式为“-”;
返回app.doScript(cmd,ScriptLanguage.applescriptLanguage);
}
仅在macOS上运行。它利用AppleScript运行
uuidgen
命令

您可能希望以这种方式生成标识符,而不是当前的
randomString(32)
函数调用