2016-07-21 26 views
1

Ich versuche, einen XML-Import automatisch von einem Startskript durchzuführen, wenn ein Dokument geladen wird. Es gelingt mir, den Großteil des Inhalts zu füllen, aber Bilder werden ignoriert. Alles funktioniert, einschließlich Bildern, wenn ich ein Handbuch 'XML importieren' über die Benutzeroberfläche oder ein manuelles Skript durchführe.Problem mit InDesign-Startskript lädt keine Bilder aus XML-Import

Unten ist mein Handbuch Skript:

var myDocument = app.activeDocument; 
var xmlFile = File('/c/Full/Path/To/data.xml'); 

myDocument.importXML(xmlFile); 

Aber das Ziel ist es beim Start zu tun. Unten ist mein Startskript:

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

Im Folgenden wird der XML-Tag für das Bild:

<Image href="file:///C:/Full/Path/To/Image/02.png" /> 

ich mich, wenn ein Problem mit dem 'afterOpen' Ereignisrückruf gibt es, und das ist der Grund, es warum funktioniert manuell mit der gleichen Methode, aber nicht im Startskript.

Antwort

0

Ich konnte das Problem umgehen, indem ich den Event-Listener komplett vermied.

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

Warum muss die App geschlossen werden? – Loic

+0

Ich möchte nicht, dass InDesign Ressourcen benötigt, wenn es nicht benötigt wird. Ich habe ein PowerShell-Skript, das auf Änderungen an XML-Dateien in einem bestimmten Verzeichnis wartet und InDesign startet, wenn es eine Änderung erkennt. Dann öffnet das Startskript die notwendigen Dokumente, führt den Import durch, exportiert nach PDF und schließt dann die App. – SchattenJager

+0

Ok Tanks für die Erklärung. – Loic