我使用的是InDesign CS6。我写了一个javascript来在菜单中添加一个选项:它首先在文档中导入XML,然后删除空页面。 运行时,在实际导入XML文件之前,它会删除空页。因此,XML没有足够的页面。
如何按需要执行这两个功能?这是我的计划:
var menuItem = "XML";
var smaTitle1 = "Import XML";
var sma1 = app.scriptMenuActions.add(smaTitle1);
// Add an Event Listener
sma1.addEventListener(
/*event type*/ 'onInvoke',
/*event handler*/ function(){
importXML(xmlPath);
}
);
sma1.addEventListener(
/*event type*/ 'afterInvoke',
/*event handler*/ function(){
// Remove empty pages
alert("remove pages");
removeEmptyPages();
}
);
function importXML(xmlPath){
if (app.documents.length != 0){
var myDocument = app.documents.item(0);
//import the entire XML structure in the document.
var myXMLImportPreferences = myDocument.xmlImportPreferences;
myXMLImportPreferences.allowTransform = false;
myXMLImportPreferences.ignoreWhitespace = true;
myXMLImportPreferences.removeUnmatchedExisting = false;
myXMLImportPreferences.importStyle = XMLImportStyles.MERGE_IMPORT;
myXMLImportPreferences.repeatTextElements = true;
var path = new File(xmlPath);
var file = path.openDlg("Importer XML", "XML:*.xml", false);
if (file != null) {
myDocument.importXML(file);
}
}
}
function removeEmptyPages(){
...
// a loop to remove empty pages
pages[i].remove();
...
}

答案 0 :(得分:0)
为什么不在importXML函数结束时调用removeEmptyPages
函数?
function importXML(xmlPath) {
…
removeEmptyPages();
}