我正在创建一个小脚本,以便在InDesign中使用,以便能够读取.txt文件并创建不同WXH和Bleed等的多个.indd文件.这是一个Java脚本.js文件.

到目前为止,我设法让一个脚本完全工作,但当我try 使用Scrip UI功能来美化它时,它似乎就是死了.没有错误或崩溃,只是什么都没有.

以下是有问题的代码.工作版本基本相同,但运行时没有UI功能.如果有人能告诉我我哪里出了问题,我将不胜感激.我已经上上下下编写了100次这个代码,但都无法生成文件.

万一它能帮上忙: 这样做的目的是能够从客户端接收Electron 表格,并为工作室提供一组预先设置好的InDesign文件.因此,需要使用出血设置和网络版本.

我已经花了几周的时间学习任何类型的编码,因为我来自印前艺术工作背景.因此,无论是否有与查询相关的建议,我们都非常感谢.

var dialog = new Window("dialog"); 
    dialog.text = "Doc Builder"; 
    dialog.orientation = "column"; 
    dialog.alignChildren = ["left","top"]; 
    dialog.spacing = 10; 
    dialog.margins = 16; 

// TXTPANEL
// ========
var txtPanel = dialog.add("panel", undefined, undefined, {name: "txtPanel"}); 
    txtPanel.orientation = "row"; 
    txtPanel.alignChildren = ["left","top"]; 
    txtPanel.spacing = 0; 
    txtPanel.margins = 10; 

var txtCopy = txtPanel.add("statictext", undefined, undefined, {name: "txtCopy"}); 
    txtCopy.text = "Select your txt file:"; 
    txtCopy.preferredSize.width = 200; 

var txtButton = txtPanel.add("button", undefined, undefined, {name: "txtButton"}); 
    txtButton.text = "Select"; 

    txtButton.onClick = function () {var file = File.openDialog("Select Your Text File (Must be a .txt format)", undefined, false);}

// FOLDERPANEL
// ===========
var folderPanel = dialog.add("panel", undefined, undefined, {name: "folderPanel"}); 
    folderPanel.orientation = "row"; 
    folderPanel.alignChildren = ["left","top"]; 
    folderPanel.spacing = 0; 
    folderPanel.margins = 10; 

var folderCopy = folderPanel.add("statictext", undefined, undefined, {name: "folderCopy"}); 
    folderCopy.text = "Select a folder destination"; 
    folderCopy.preferredSize.width = 200; 

var folderButton = folderPanel.add("button", undefined, undefined, {name: "folderButton"}); 
    folderButton.text = "Select"; 

    folderButton.onClick = function () {var folder = Folder.selectDialog("Select the folder where the new documents should be saved");}

// COLOURSPACEPANEL
// ================
var colourSpacePanel = dialog.add("panel", undefined, undefined, {name: "colourSpacePanel"}); 
    colourSpacePanel.text = "Colour Space"; 
    colourSpacePanel.preferredSize.height = 80; 
    colourSpacePanel.orientation = "row"; 
    colourSpacePanel.alignChildren = ["left","center"]; 
    colourSpacePanel.spacing = 50; 
    colourSpacePanel.margins = 10; 

var printButton = colourSpacePanel.add("radiobutton", undefined, undefined, {name: "printButton"}); 
    printButton.text = "Print"; 
    printButton.value = true; 

var webButton = colourSpacePanel.add("radiobutton", undefined, undefined, {name: "webButton"}); 
    webButton.text = "Web"; 

// BLEEDPANEL
// ==========
var bleedPanel = dialog.add("panel", undefined, undefined, {name: "bleedPanel"}); 
    bleedPanel.text = "Document Bleed"; 
    bleedPanel.orientation = "column"; 
    bleedPanel.alignChildren = ["left","top"]; 
    bleedPanel.spacing = 0; 
    bleedPanel.margins = 10; 

var bleedCopy = bleedPanel.add('edittext {properties: {name: "bleedCopy"}}'); 
    bleedCopy.text = "3mm"; 

// ENDPANEL
// ========
var endPanel = dialog.add("group", undefined, {name: "endPanel"}); 
    endPanel.orientation = "row"; 
    endPanel.alignChildren = ["left","bottom"]; 
    endPanel.spacing = 20; 
    endPanel.margins = 0; 

var buildButton = endPanel.add("button", undefined, undefined, {name: "buildButton"}); 
    buildButton.text = "Build"; 

var cancelButton = endPanel.add("button", undefined, undefined, {name: "cancelButton"}); 
    cancelButton.text = "Cancel"; 

buildButton.onClick = function ()
{
file.open("r");
var content = file.read().split("\n");

for (var i = 0; i < content.length; i++)
{
    var curLine = content[i].split("\t");
    var width = curLine[0];
    var height = curLine[1];
    var filename = curLine[2];
    docName = filename + "_" + height + "x" + width;
   
    try {
        var newDoc = app.documents.add(false);
        newDoc.documentPreferences.pageHeight = height;
        newDoc.documentPreferences.pageWidth = width;
        newDoc.documentPreferences.facingPages = false;

         newDoc.documentPreferences.properties =
            {
                documentBleedUniformSize : true,
                documentBleedTopOffset : docBleed
            };

        newDoc.save(new File(folder + "/" + docName + "mm.indd"));
        newDoc.close(SaveOptions.no)
        } catch(myError){}
}

}

dialog.show();


已try 各种修复: 将onClick更改为onMousedown 调整某些动作的顺序

该脚本将显示在InDesign的"脚本"面板中. 一旦双击,我希望弹出一个窗口,所有的参数都被分配. 然后,一旦用户点击"构建"

它会将所有文档生成到选定的目标文件夹中.

如果您想try 运行实时数据,则需要创建一个3列的.txt文件(我从Excel中导出): A栏:宽度, B栏:高度, C栏:文件名.

推荐答案

你必须决定它应该是一个‘调色板’还是一个‘对话’窗口?它们的工作方式不同.对话框从界面获取信息,并在对话框窗口关闭后工作(在本例中使用按钮‘Build’).调色板一直停留在屏幕上,每次你点击它的按钮时,调色板都会获取一些信息并完成工作,直到你用"取消"按钮或其他方式关闭调色板.

以下是用作调色板的代码的固定变体:

#targetengine 'session'

var file, folder;

var palette = new Window("palette");
    palette.text = "Doc Builder";
    palette.orientation = "column";
    palette.alignChildren = ["left","top"];
    palette.spacing = 10;
    palette.margins = 16;

// TXTPANEL
// ========
var txtPanel = palette.add("panel", undefined, undefined, {name: "txtPanel"});
    txtPanel.orientation = "row";
    txtPanel.alignChildren = ["left","top"];
    txtPanel.spacing = 0;
    txtPanel.margins = 10;

var txtCopy = txtPanel.add("statictext", undefined, undefined, {name: "txtCopy"});
    txtCopy.text = "Select your txt file:";
    txtCopy.preferredSize.width = 200;

var txtButton = txtPanel.add("button", undefined, undefined, {name: "txtButton"});
    txtButton.text = "Select";

    txtButton.onClick = function () {file = File.openDialog("Select Your Text File (Must be a .txt format)", undefined, false);}

// FOLDERPANEL
// ===========
var folderPanel = palette.add("panel", undefined, undefined, {name: "folderPanel"});
    folderPanel.orientation = "row";
    folderPanel.alignChildren = ["left","top"];
    folderPanel.spacing = 0;
    folderPanel.margins = 10;

var folderCopy = folderPanel.add("statictext", undefined, undefined, {name: "folderCopy"});
    folderCopy.text = "Select a folder destination";
    folderCopy.preferredSize.width = 200;

var folderButton = folderPanel.add("button", undefined, undefined, {name: "folderButton"});
    folderButton.text = "Select";

    folderButton.onClick = function () {folder = Folder.selectDialog("Select the folder where the new documents should be saved");}

// COLOURSPACEPANEL
// ================
var colourSpacePanel = palette.add("panel", undefined, undefined, {name: "colourSpacePanel"});
    colourSpacePanel.text = "Colour Space";
    colourSpacePanel.preferredSize.height = 80;
    colourSpacePanel.orientation = "row";
    colourSpacePanel.alignChildren = ["left","center"];
    colourSpacePanel.spacing = 50;
    colourSpacePanel.margins = 10;

var printButton = colourSpacePanel.add("radiobutton", undefined, undefined, {name: "printButton"});
    printButton.text = "Print";
    printButton.value = true;

var webButton = colourSpacePanel.add("radiobutton", undefined, undefined, {name: "webButton"});
    webButton.text = "Web";

// BLEEDPANEL
// ==========
var bleedPanel = palette.add("panel", undefined, undefined, {name: "bleedPanel"});
    bleedPanel.text = "Document Bleed";
    bleedPanel.orientation = "column";
    bleedPanel.alignChildren = ["left","top"];
    bleedPanel.spacing = 0;
    bleedPanel.margins = 10;

var bleedCopy = bleedPanel.add('edittext {properties: {name: "bleedCopy"}}');
    bleedCopy.text = "3mm";

// ENDPANEL
// ========
var endPanel = palette.add("group", undefined, {name: "endPanel"});
    endPanel.orientation = "row";
    endPanel.alignChildren = ["left","bottom"];
    endPanel.spacing = 20;
    endPanel.margins = 0;

var buildButton = endPanel.add("button", undefined, undefined, {name: "buildButton"});
    buildButton.text = "Build";

var cancelButton = endPanel.add("button", undefined, undefined, {name: "cancelButton"});
    cancelButton.text = "Cancel";

cancelButton.onClick = function() { palette.close() }

buildButton.onClick = function()
{
    file.open("r");
    var content = file.read().split("\n");

    for (var i = 0; i < content.length; i++)
    {
        var curLine = content[i].split("\t");
        var width = curLine[0];
        var height = curLine[1];
        var filename = curLine[2];
        var docName = filename + "_" + height + "x" + width;

        try {
            var newDoc = app.documents.add(false);
            newDoc.documentPreferences.pageHeight = height;
            newDoc.documentPreferences.pageWidth = width;
            newDoc.documentPreferences.facingPages = false;

            newDoc.documentPreferences.properties =
            {
                documentBleedUniformSize : true,
                documentBleedTopOffset : parseFloat(bleedCopy.text)
            };

            newDoc.save(new File(folder + "/" + docName + "mm.indd"));
            newDoc.close(SaveOptions.no);
        } catch(myError){ alert(myError) }
    }

}

palette.show();

Javascript相关问答推荐

如何在JavaScript中在文本内容中添加新行

使用TMS Web Core中的HTML模板中的参数调用过程

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

colored颜色 检测JS,平均图像 colored颜色 检测JS

将旋转的矩形zoom 到覆盖它所需的最小尺寸&S容器

CheckBox作为Vue3中的一个组件

使用GraphQL查询Uniswap的ETH价格

如何使用子字符串在数组中搜索重复项

try 使用javascript隐藏下拉 Select

用JS从平面文件构建树形 struct 的JSON

在Java中寻找三次Bezier曲线上的点及其Angular

在Matter.js中添加从点A到另一个约束的约束

Webpack在导入前混淆文件名

try 使用PM2在AWS ubuntu服务器上运行 node 进程时出错

回溯替代方式

如何找到带有特定文本和测试ID的div?

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

如何在Reaction中清除输入字段

在每次重新加载页面时更改指针光标

带有JS模块模式的Rails的Importmap错误:";Net::ERR_ABORTED 404(未找到)&Quot;