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)
函数调用