2012-06-11 4 views
2

Je n'arrive pas à écrire un script js dans indesign cs6 pour exporter mes images formatées. le code ci-dessous (trouvé sur ce site et légèrement modifié) ouvre uniquement le document. Idéalement, le script parcourrait toutes les images formatées/recadrées dans mon document et les exporterait dans un nouveau dossier sur le bureau, mais avec les noms de fichier d'origine.Indesign CS6 Scripting - Exportation d'images

toute aide serait très apprécié:

test(); 
function test(){ 

var myDoc = app.open('/Users/StudioA/Desktop/file.indd'); 
var myGroups = myDoc.groups; 

//for each group... 
for (var i = 0;i < myGroups.length; i++){ 
    // for each rectangle in the group... 
    for(var r = 0; r< myGroups[i].rectangles.length; r++){ 

     var myRect = myGroups[i].rectangles[r]; 
      app.jpegExportPreferences.exportResolution = 300; 
      app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM; 

      //give it a unique name 
      var myFile = new File('/Users/StudioA/Desktop/Export/' + myRect.name + '.jpg'); 

      myRect.exportFile(ExportFormat.JPG, myFile); 

      } 
     } 

} 

Répondre

4

Le nom de fichier ne se trouve sur le rectangle, mais sur le lien en rapport avec le graphique placé. Cela devrait faire ce que vous voulez donné un document ouvert:

test(); 
test de fonctionnement

() {

var myDoc = app.activeDocument, 
apis = myDoc.allPageItems, rect, fileName; 


while (rect = apis.pop()) 
{ 
    if (!(rect instanceof Rectangle) || !rect.graphics[0].isValid){ continue; } 

    fileName = File (rect.graphics[0].itemLink.filePath).name; 
    fileName = fileName.replace(/\.[a-z]{2,4}$/i, '.jpg'); 

    app.jpegExportPreferences.exportResolution = 300; 
    app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM; 

    //give it a unique name 
    var myFile = new File (Folder.desktop+"/"+ fileName); 

    rect.exportFile(ExportFormat.JPG, myFile); 
} 

}

+0

merci beaucoup, je vais tester cela et commentaires de retour ici! – Alex

+0

fonctionne parfaitement! Infiniment reconnaissant :) – Alex

0

juste ajouter ma version prolixe de ce qui fonctionne à partir de la sélection en cours dans InDesign et fournit des commentaires sur la console. Il renomme les images avec le préfixe « crop_ » et les enregistre dans ~/temp

exportSelectedImages(); 

function exportSelectedImages() { 
    // configure export settings 
    app.jpegExportPreferences.exportResolution = 72; 
    app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.HIGH; 

    // collect selected objects 
    var selected = app.activeDocument.selection; 
    $.writeln("Got " + selected.length + " selected objects..."); 

    // process selected objects 
    for (var i = 0; i < selected.length; i++) { 
     var cursor = selected[i]; 
     var img = cursor.images; 

     $.writeln("Processing #" + (i+1) + "/" + selected.length); 
     $.writeln("\t Type: " + cursor.constructor.name); 

     // verify if object contains an image or not 
     if (cursor.images.length > 0) {  
      var img = cursor.images[0]; 
      $.writeln("\t Contains image of type " + img.imageTypeName); 
      var imageFileName = cursor.images[0].itemLink.name; 
      $.writeln("\t File Name: " + imageFileName); 
     } else { 
      $.writeln("\t Not an image"); 
     } 

     // save the object to a jpeg in path specified below 
     var myFile = new File('~/temp/' + "crop_" + imageFileName + '.jpg'); 
     cursor.exportFile(ExportFormat.JPG, myFile); 

    } 

    $.writeln("Done."); 
}