Massenexport aller Bilder als einzelne JPEGs in InDesign?

Ich bin neu bei Indesign. Ich habe eine Datei, die Bilder mit Photoshop-Beschneidungspfaden enthält. Ich möchte alle zugeschnittenen Bilder in einen Ordner exportieren. Ich habe versucht, "Links kopieren nach" auszuführen, und die Originalbilder wurden erfolgreich exportiert. Ich möchte jedoch nicht die Originalbilder, sondern die beschnittenen Bilder. Gibt es eine Möglichkeit, alle beschnittenen Bilder als JPEG oder TIFF und nicht das verknüpfte Originalbild zu exportieren? Kurz gesagt, ich möchte die Bilder ohne Hintergrund exportieren. Ich hoffe, ich mache Sinn. Ich habe ungefähr 800-1000 Bilder, daher wäre eine Stapelverarbeitungsmethode sehr wünschenswert.

Ich habe tatsächlich einen Weg gefunden, die Bilder so zu exportieren, wie ich sie haben möchte. Ich muss nur auf den Bildcontainer (nicht das Bild) klicken, zu Datei> Exportieren gehen und es dann als JPEG exportieren. Im Popup-Fenster wähle ich Exportauswahl, maximale Qualität und 2400 Auflösung. Es exportiert die Bilder so, wie ich sie haben möchte. Aber das muss ich nach und nach machen. Ich habe nur zwei Bedenken:

  1. Gibt es eine Möglichkeit für mich, dies per Batch zu tun? Möchten Sie alle Bildcontainer auswählen und sie einzeln automatisch exportieren?

  2. Gibt es eine Möglichkeit, die gespeicherten Dateien automatisch nach dem ursprünglichen Bildnamen zu benennen?

Danke für deine Hilfe!

Update: Ich habe dieses Skript aus einem der Beiträge hier gefunden und es ein wenig an meine Bedürfnisse angepasst. Es scheint in den meisten meiner INDD-Dokumente zu funktionieren, aber in anderen schlägt es fehl. Ich wundere mich warum. Ich bekomme manchmal die Fehlermeldung, dass

Fehlerzeichenfolge: null ist kein Objekt

Quelle: fileName = File ( rect.graphics[0].itemLink.filePath ).name;

Mir ist auch aufgefallen, dass einige Objekte übersprungen und nicht alle Bilder heruntergeladen werden. Ich denke, es überspringt diejenigen, die nicht in Rechtecken sind.

test();
function test()
{
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 = 2400;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;


//give it a unique name
var myFile = new File ("C:/Users/RANFacistol-Mata/Desktop/Image Trial/"+ fileName);


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

Gibt es eine Möglichkeit für mich, dieses Skript so zu ändern, dass ich, anstatt alle Rechtecke zu durchlaufen, stattdessen alle Objekte durchlaufen würde, ähnlich wie beim Klicken auf diese Schaltfläche „Weiter“.

Überprüfen Sie dann, ob dieses Objekt ein Bild enthält (jpg, tiff, psd, ai, eps). Wenn dies der Fall ist, werde ich es wie oben beschrieben exportieren.

Danke für deine Hilfe!

Antworten (3)

Vielen Dank für Ihre Eingaben. Ich habe alle Antworten kombiniert, die ich aus all den verschiedenen Foren erhalten habe, in denen ich um Hilfe gebeten habe, und bin schließlich zu einem Skript gekommen, das nur durch die verknüpften Bilder iteriert und außer Acht lässt, ob der Container ein Rechteck, ein Polygon oder was auch immer ist. Ich habe auch einen Zähler hinzugefügt, damit die Bilder nicht überschrieben werden, falls die Namen gleich sind.

var myDoc = app.activeDocument,
apis = myDoc.links.everyItem().getElements(), items, fileName;
var i = 0;

while ( items = apis.pop() )
{
    items = items.parent.parent;  
    if ( !(items.hasOwnProperty ("graphics") )){ continue; }
    i++;
    try{
        fileName = File ( items.graphics[0].itemLink.filePath ).name;
        fileName =  i + "_" + fileName.replace( /\.[a-z]{2,4}$/i, '.jpg' );
    }catch(e){};

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

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

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

Ja, um alle Seitenelemente auf Bilder zu überprüfen, nicht nur auf Rechtecke, müssen Sie nur den !(rect instanceof Rectangle)Teil entfernen. Und wenn Sie schon dabei sind, benennen Sie auch die Variable von rect in so etwas wie pageItem um, damit sie beschreibt, was sie tatsächlich enthält. Dein Skript sollte dann also so aussehen:

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

while ( pageItem = apis.pop() ) {
  if ( !pageItem.graphics[0].isValid ){ continue;}

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

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

  //give it a unique name
  var myFile = new File ("C:/Users/RANFacistol-Mata/Desktop/Image Trial/"+ fileName);


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

Ersetzen

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

von

if ( !(rect instanceof Rectangle) && !(rect instanceof Oval) && !(rect instanceof Polygon)|| !rect.graphics[0].isValid ){ continue;}

Bitte beachten Sie, dass, wenn Sie dieselbe Grafik mehrmals importiert haben, das letzte Vorkommen dieser Grafik alle anderen ersetzt.