我正在尝试在加载文档时从启动脚本自动进行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);

}

09-25 20:28