0){    if(!documents.length){      a" />

解决psd文件过大,制作一个ps清理元数据的脚本

您所在的位置:网站首页 ps文件清理 解决psd文件过大,制作一个ps清理元数据的脚本

解决psd文件过大,制作一个ps清理元数据的脚本

2023-08-28 02:49| 来源: 网络整理| 查看: 265

function deleteDocumentAncestorSMetadata() {

    if(String(app.name).search("Photoshop") > 0) {

        if(!documents.length) {

            alert("There are no open documents. Please open a file to run this script.")

            return;

        }

        if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");

        var xmp = new XMPMeta( activeDocument.xmpMetadata.rawData);

        xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors");

        app.activeDocument.xmpMetadata.rawData = xmp.serialize();

        clearDocumentAncestorsForAllLayers(app.activeDocument);

        if (app.activeDocument !== mainDocument) {

            app.activeDocument.close(SaveOptions.SAVECHANGES);

        }else{

            app.activeDocument.save();

        }

    }

}

function clearDocumentAncestorsForAllLayers(doc) {

    try {

        if (doc == undefined) {

            return;

        }

        for (var i = 0; i < doc.layers.length; i++) {

            var curLayer = doc.layers[i];

            if (curLayer.typename != "ArtLayer") {

                clearDocumentAncestorsForAllLayers(curLayer);

                continue;

            }

            if (curLayer.kind == "LayerKind.SMARTOBJECT") {

                app.activeDocument.activeLayer = curLayer;

                

                var idplacedLayerEditContents = stringIDToTypeID("placedLayerEditContents");

                var actionDescriptor = new ActionDescriptor();

                executeAction(idplacedLayerEditContents, actionDescriptor, DialogModes.NO);

                if(app.activeDocument.activeLayer == curLayer){

                    continue;

                }

                deleteDocumentAncestorSMetadata()

                layerSetStr += ("\n"+curLayer.name)

            }

        }

    } catch (e) {

        alert("Layer clean fail.name="+doc+";e="+e)

    }

}

var layerSetStr = "";

var mainDocument = app.activeDocument;

function start(){

    deleteDocumentAncestorSMetadata();

    alert("Clean finished.\n[doc name]:"+mainDocument.name+"\n[layer set]:"+layerSetStr);

}

try{

    if(confirm("Start to clean?")){

        start();

    }

} catch (e) {

    alert("Clean fail.e="+e)

}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3