javascript - InDesign 启动脚本不从 XML 导入加载图像的问题

标签 javascript xml adobe-indesign extendscript

我试图在加载文档时从启动脚本自动执行 XML 导入。我成功地填充了大部分内容,但图像被忽略了。当我通过 UI 或手动脚本执行手动“导入 XML”时,一切正常,包括图像。

下面是我的手动脚本:

var myDocument = app.activeDocument;
var xmlFile = File('/c/Full/Path/To/data.xml');

myDocument.importXML(xmlFile);

但目标是在启动时完成。下面是我的启动脚本:

#targetengine "session"

app.addEventListener('afterOpen', function(myEvent) {
    if (myEvent.target.constructor.name !== 'Document') {
        return;
    }

    var myDocument = myEvent.target;
    var xmlFile = File('/c/Full/Path/To/data.xml');

    myDocument.importXML(xmlFile);
});

下面是图像的 XML 标记:

<Image href="file:///C:/Full/Path/To/Image/02.png" />

我想知道 'afterOpen' 事件回调是否存在问题,这就是它使用相同方法手动工作的原因,但不在启动脚本中。

最佳答案

我能够通过完全避免事件监听器来解决这个问题。

main();  

function main () {  

    // create a path for a file object  
    var curFile = File('/c/Path/To/file.indd');  
    var xmlFile = File('/c/Path/To/data.xml');  

    // close app if files don't exist  
    if (!curFile.exists || !xmlFile.exists) {  
        app.quit(SaveOptions.NO);  
    }  

    // open the file  
    var curDoc = app.open(curFile);  

    // import the xml  
    curDoc.importXML(xmlFile);  

    // create a new file object  
    var pdfFile = new File(curFile.parent + '/' + curFile.name + '.pdf');  

    // export to pdf  
    curDoc.exportFile(ExportFormat.PDF_TYPE, pdfFile);  

    // close app  
    app.quit(SaveOptions.NO);  

}

关于javascript - InDesign 启动脚本不从 XML 导入加载图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507863/

相关文章:

javascript - 如何从 jquery 中找出一个 css 值

javascript - 在 AngularJS 中使用数据库 - 我应该在哪里编写数据库连接代码?

Java XPath : Queries with default namespace xmlns

adobe-indesign - 连接到 Adob​​e InDesign 控制台

javascript - 当我尝试在 ExtendScriptTK 中调试用于 indesign 的脚本时,我得到的 app.documents 是未定义的,如果我从 indesign 运行脚本它会工作

javascript - 如何使用 jQuery 添加 ul 元素自定义事件?

javascript - SAPUI5:无法导航到定义的页面并出现错误(无法找到具有 ID 布局的控件 - EventProvider sap.m.routing.Target)

python - 如何使用pyspark解析xml字符串列

adobe-indesign - 访问通过 Javascript 添加的段落

javascript - 告诉 TypeScript 文件将包含在脚本标签中?