Adobe 检查InDesign链接是否缺少XMP-DocumentID和InstanceID

Adobe 检查InDesign链接是否缺少XMP-DocumentID和InstanceID,adobe,metadata,adobe-indesign,extendscript,xmp,Adobe,Metadata,Adobe Indesign,Extendscript,Xmp,我正在使用ExtendScript处理InDesignCC 2019中.indd文件的元数据信息 我的要求是,我需要访问与.indd文件关联的所有单个链接元数据,并查看是否有任何链接元数据丢失DocumentID和InstanceID。如果任何链接元数据没有DocumentID和/或InstanceID属性的值,那么我需要显示与该链接关联的文件名,表明该特定文件缺少DocumentID和/或InstanceID 我使用下面的脚本访问.indd文件的元数据 $。级别=0 //加载XMP库 函数lo

我正在使用ExtendScript处理InDesignCC 2019中
.indd
文件的元数据信息

我的要求是,我需要访问与
.indd
文件关联的所有单个链接元数据,并查看是否有任何链接元数据丢失
DocumentID
InstanceID
。如果任何链接元数据没有
DocumentID
和/或
InstanceID
属性的值,那么我需要显示与该链接关联的文件名,表明该特定文件缺少
DocumentID
和/或
InstanceID

我使用下面的脚本访问
.indd
文件的元数据

$。级别=0
//加载XMP库
函数loadXMPLibrary(){
如果(!ExternalObject.AdobeXMPScript){
请尝试{ExternalObject.AdobeXMPScript=newexternalobject('lib:AdobeXMPScript');}
catch(e){alert('无法加载AdobeXMPScript库!');返回false;}
}
返回true;
}
var myFile=app.activeDocument.fullName;
var myXmp=null;
//检查库和文件
if(loadXMPLibrary()&&myFile!==null){
xmpFile=新的xmpFile(myFile.fsName、XMPConst.FILE\u INDESIGN、XMPConst.OPEN\u用于更新);
myXmp=xmpFile.getXMP();
$.writeln(xmpFile.getPacketInfo());
}
if(myXmp){
$.writeln(myXmp);
$.writeln(XMPFile.getFormatInfo(XMPConst.FILE_INDESIGN));
}

有谁能帮我进一步做这件事吗?

一旦你从链接中获得了XMP,即
xmpFile.getXMP()
,你就需要:

  • 利用该方法检索特定元数据属性的值

  • 通常,
    DocumentID
    InstanceID
    将与架构名称空间相关联,其描述如下:

    NS\u XMP\u MM
    用于XMP数字资产管理架构的XML命名空间

    例如,要获取
    DocumentID
    ,您将执行以下操作:

    var documentID=allXMP.getProperty(XMPConst.NS_XMP_MM,'documentID',XMPConst.STRING);
    

  • 解决方案: 下面的要点(example.jsx)执行以下操作:

  • 检查
    .indd
    文件是否打开,如果没有打开,则通知用户

  • 加载AdobeXMPScript XMP库

  • 检查所有链接的状态是否为“OK”,即检查它们是否未被“修改”或“丢失”。如果任何链接状态不是“OK”,则要求用户将其状态更新为“OK”

  • 检查每个链接资产是否具有
    DocumentID
    InstanceID
    ,并将其值记录到JavaScript控制台

  • 对于没有
    DocumentID
    和/或
    InstanceID
    的任何链接资产,将显示一个警报对话框,指示链接资产的名称和路径

  • 示例.jsx

    $。级别=0;
    //如果没有打开文档,则发出警告。
    如果(!app.documents.length){
    警报('打开文档并重试','缺少文档',false);
    退出();
    }
    var doc=app.activeDocument;
    //加载XMP库
    函数loadXMPLibrary(){
    如果(!ExternalObject.AdobeXMPScript){
    试一试{
    ExternalObject.AdobeXMPScript=新的ExternalObject('lib:AdobeXMPScript');
    }捕获(e){
    警报('加载AdobeXMPScript库失败\n'+e.message,'错误',为真');
    返回false;
    }
    }
    返回true;
    }
    //检查所有链路状态是否正常。
    功能链接StatusCheck(文档){
    对于(变量i=0,len=doc.links.length;i