InDesign CS6 javascript:importXML并删除空白页面

时间:2015-01-20 16:41:43

标签: javascript xml adobe-indesign

我使用的是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();
    ...
}




1 个答案:

答案 0 :(得分:0)

为什么不在importXML函数结束时调用removeEmptyPages函数?

function importXML(xmlPath) {
  …
  removeEmptyPages();
}