2016-07-21 1 views
1

Je tente d'effectuer une importation XML automatiquement à partir d'un script de démarrage lorsqu'un document est chargé. J'ai réussi à remplir la majeure partie du contenu, mais les images sont ignorées. Tout fonctionne, y compris les images, quand je fais un manuel 'Import XML' via l'interface utilisateur, ou via un script manuel.Problème avec le script de démarrage d'InDesign ne chargeant pas les images à partir de l'importation XML

ci-dessous est mon script manuel:

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

myDocument.importXML(xmlFile); 

Mais le but est de le faire au démarrage. Voici mon script de démarrage:

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

est en dessous de la balise XML pour l'image:

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

Je me demande s'il y a un problème avec le rappel d'un événement 'afterOpen', et c'est la raison pour laquelle il fonctionne manuellement en utilisant la même méthode, mais pas dans le script de démarrage.

Répondre

0

J'ai été en mesure de contourner le problème en évitant complètement l'écouteur d'événements.

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

Pourquoi est-il nécessaire de fermer l'application? – Loic

+0

Je ne veux pas qu'InDesign utilise des ressources lorsque ce n'est pas nécessaire. J'ai un script PowerShell qui écoute les modifications apportées aux fichiers XML dans un répertoire spécifique et lance InDesign lorsqu'il détecte une modification. Ensuite, le script de démarrage ouvre le (s) document (s) nécessaire (s), effectue l'importation, exporte vers PDF, puis ferme l'application. – SchattenJager

+0

Ok réservoirs pour l'explication. – Loic