InDesign 启动脚本无法从 XML 导入加载图像的问题
Issue with InDesign startup script not loading images from XML import
我正在尝试在加载文档时从启动脚本自动执行 XML 导入。我成功地填充了大部分内容,但图像被忽略了。当我通过 UI 或手动脚本执行手动 'Import 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);
}
我正在尝试在加载文档时从启动脚本自动执行 XML 导入。我成功地填充了大部分内容,但图像被忽略了。当我通过 UI 或手动脚本执行手动 'Import 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);
}