2016-07-21 2 views
1

文書が読み込まれたときにスタートアップスクリプトからXMLを自動的にインポートしようとしています。私は大半のコンテンツを取り込むことに成功していますが、画像は無視されています。 UIを使用してマニュアル「Import XML」を実行するとき、または手動スクリプトを使用して、画像を含むすべてが機能します。InDesignスタートアップスクリプトが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'イベントコールバックで問題がある場合、私は思ったんだけど、それはなぜそれ理由です同じメソッドを使用して手動で動作しますが、起動スクリプトでは動作しません。

答えて

0

私はイベントリスナーを完全に避けることで問題を回避することができました。

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); 

} 
+1

なぜアプリケーションを終了する必要がありますか? – Loic

+0

InDesignにリソースが必要ないときは、InDesignでリソースを使用したくないです。特定のディレクトリにあるXMLファイルの変更をリッスンし、変更を検出したときにInDesignを起動するPowerShellスクリプトがあります。その後、起動スクリプトは必要なドキュメントを開き、インポートを行い、PDFにエクスポートして、アプリケーションを閉じます。 – SchattenJager

+0

説明のためにタンクを入れてください。 – Loic

関連する問題