遍历图层并将其设置为可见

用户名

我正在尝试遍历InDesign文档中的各个层,并将所有层设置为可见。这是为了确保正确进行文件收集。

我整理了以下内容

var myDocument = app.activeDocument;

//make all layers visable
for (i = 0; i < myDocument.layers.length; i++) {    
    if(myDocument.layers[i].visible = false) {  
        myDocument.layers[i].visible = true;
    };  
}; 

这摘自一个自动执行文件收集的较大脚本,这只是图层的例程。

对于上下文,这是实际的脚本。

function Left(str, n){
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}

if (app.documents.length != 0){
    var myDocument = app.activeDocument;
    var docName = myDocument.name;
    var docName = Left(docName, String(docName).length-5)
    //alert(docName);
    var myFolder = new Folder ("~/Desktop/"+docName+"/");
    //myFolder.create("Bob");s

    /*new Folder ("~/Desktop/Collected/Hi-Res PDF/");
    new Folder ("~/Desktop/Collected/RELEASE INFO/");*/ 

//make all layers visable
for (i = 0; i < myDocument.layers.length; i++) { 

    if(myDocument.layers[i].visible = false) {  

        myDocument.layers[i].visible = true;
    };  
};  

myDocument.packageForPrint (myFolder,1,1,0,1,0,0,0);

var newFolder = new Folder ("~/Desktop/"+docName+"/RELEASE INFO/");
newFolder.create();

var inddFolder = new Folder ("~/Desktop/"+docName+"/Indesign Files/");

inddFolder.create();

var newFolder = new Folder ("~/Desktop/"+docName+"/IDML Files/");
newFolder.create();

//Export IMDL File

myDocument.exportFile(ExportFormat.INDESIGN_MARKUP, File("~/Desktop/"+docName+"/IDML Files/"+docName+".idml"), false);

//Move INDD File
//var myInddfile = File("~/Desktop/"+docName+"/"+docName+".indd"); 
//myDocument.changePath(File(inddFolder),false);

//Rip Low Res PDFs

var myPDFExportPreset = app.pdfExportPresets.item("CP3 Low Rez"); 
app.activeDocument.exportFile(ExportFormat.pdfType, 
    File("~/Desktop/"+docName+"/RELEASE INFO/"+docName+"_LR.pdf"), false, myPDFExportPreset);

//Now export the document. You'll have to fill in your own file path.
//app.activeDocument.exportFile(ExportFormat.pdfType, File("~/Desktop/"+docName+"_FILM/RELEASE INFO/"+docName+"_LR.pdf"), false);

var newFolder = new Folder ("~/Desktop/"+docName+"/Hi-Res PDF/");
newFolder.create();

//Rip Hi-Res PDF

var myPDFExportPreset = app.pdfExportPresets.item("Kern Hi Rez Print"); 
app.activeDocument.exportFile(ExportFormat.pdfType, 
    File("~/Desktop/"+docName+"/Hi-Res PDF/"+docName+"_HiRes.pdf"), false, myPDFExportPreset);

//Now export the document. You'll have to fill in your own file path.
//app.activeDocument.exportFile(ExportFormat.pdfType, File("~/Desktop/"+docName+"_FILM/Hi-Res PDF/"+docName+"_HiRes.pdf"), false);

myFolder.execute();

}
else{
    alert("Please open a document and try again.");
}

希望当脚本执行时,所有层都将设置为可见,然后将进行文件收集。

罗伯

if语句中使用三重等于表示严格相等例如:

for (i = 0; i < myDocument.layers.length; i++) {    
    if(myDocument.layers[i].visible === false) {  // <-- Note the `===` instead of `=`
        myDocument.layers[i].visible = true;
    };  
}; 

甚至更好,您可以更改它以使用逻辑NOT!运算符

for (i = 0; i < myDocument.layers.length; i++) {    
    if (!myDocument.layers[i].visible) {  // <-- Change to this.
        myDocument.layers[i].visible = true;
    };  
}; 

注意:在您的示例中,条件if语句实际上不是必需的。您可以简单地这样做:

for (i = 0; i < myDocument.layers.length; i++) {    
    myDocument.layers[i].visible = true;
};

将所有内容设置为可见

如果您实际上想使所有内容可见-包括;InDesign文档层以及子层上的所有页面项目,那么您需要执行以下示例:

var myDocument = app.activeDocument;

// ...

function makeAllVisible() {
    for (i = 0, max = myDocument.layers.length; i < max; i++) {
        var  currentLayer = myDocument.layers[i];        
        currentLayer.visible = true; // Make the top level layer visible.

        // Make all sub layers visible,
        // i.e. make all page items on the current layer visible.
        var currentLayerPageItems = currentLayer.allPageItems;
        for (x = 0, len = currentLayerPageItems.length; x < len; x++) {
            currentLayerPageItems[x].visible = true
        }
    }
}

makeAllVisible(); // Invoke the function.

// ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将不可见复选框设置为在列表视图中可见

Android Material Design-即使将windowActionBar设置为false并将windowNoTitle设置为true之后,ActionBar和Title仍可见

如何设置可见以隐藏设置为可见的jDialog(如果条件内部)(如果循环外部)?

Mapbox如何设置菜单,以便仅“可见”图层处于“打开”状态

使用处理程序将可见/不可见设置为制造商

如果集合包含,可见性设置为可见

溢出y设置为可见,但行为类似于滚动

如何从数据表中隐藏或删除列或如何使用flutter将其设置为不可见

如何访问GoogleMap-Object(Android地图v2)上的所有标记并将其设置为可见?

无法将datagridview的行可见设置为false

无法将datagridview的行可见设置为false

为什么在CSS中隐藏可见性总是将其设置为可见?

Android:将可见性设置为可见会导致按钮上出现nullpointerexception

Eclipse在添加到JMenuBar并将其设置为可见后没有显示JMenu项目吗?

将系列可见性设置为False也会将其隐藏在图例中

将Jcrop选择的外部区域设置为不可见

列表视图单击以将按钮设置为可见

UITextView点击事件可将UITableView设置为可见

即使路径设置为false,按钮仍然可见

尽管设置为不可见,但显示了Vaadin面板

将焦点矩形设置为红色/透明并确保可见

打开文件并将其设置为变量

在实际设备上将其他布局设置为可见后,ImageButton不可见

将RecyclerView设置为不可见

CSS 目标切换 - 初始设置为可见

选择图层中的可见像素

标签设置为可见不显示

为按钮的可见性设置计时器

即使 DockPanel 设置为可见,它也不可见