ReSave alle Indesign Dateien

Indesign hat die Eigenart beim Speichern von Dateien immer alles hinten an das Dateiende an zu hängen, dadurch werden die Dateien manchmal sehr groß. Hier hilft es einem “Speichern als” auszuführen, dabei wird die Datei dann komplett neugeschrieben und alle unnötigen Daten gelöscht. Auf diese Art kann man schon mal gerne 50 bis 80% der Dateigröße einsparen.

Um diesen Prozess nicht für alle alten Indesign Dateien ausführen zu müssen, habe ich ein JavaScript geschrieben, dass diesen Prozess automatisiert.

Ich übernehme keine Haftung für irgendwelche Fehler beim ausführen. Zu beachten ist, dass nur Indesign-Dateien mit der Dateiendung .indd bearbeitet werden. Dateien die in einer alten Indesign-Version gespeichert wurden, werden umgewandelt und in der neusten Version gespeichert. Beim Ausführen einfach einen Ordner mit Indesign-Dateien wählen. Es werden alle Unterordner automatisch mitbearbeitet.

Für den Fall, dass Indsign während des Ausführens des Scripts abstürzt, wird eine eine Log-Datei ReSave.log angelegt, so kann man sehen, bei welchem Dokument Indesign Probleme macht.

Download

var myFolder = Folder.selectDialog();
var logFile = makeLogFile("ReSave", myFolder, true, false);
processFolder(myFolder);

function processFolder (myFolder) {
	try {
	var myItems = myFolder.getFiles("*.indd");
	reSave(myItems);
	} catch (e) {
		// nix
		}

	try {
	var myItems = myFolder.getFiles("*");
	for (var i = 0; i < myItems.length-1; i++) {
		processFolder (myItems[i]);
		}
	} catch (e) {
		// nix
		}
	}

function reSave(myItems) {

	for (var i = 0; i < myItems.length; i++) {
		app.scriptPreferences.userInteractionLevel = UserInteractionLevels.neverInteract;

		var myDocument = app.open(myItems[i]);
		log(logFile, ("Opened " + myDocument.name));
		myDocument.save(myItems[i]);

		myDocument.close();
		app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

		}
	}

function makeLogFile(aName, logLoc, deleteIt, useExisting) {
	var aFile = File(logLoc + "/" + aName + ".log");
	if (deleteIt) {
		aFile.remove();
		return aFile;
	}
	if (!useExisting) {
		var n = 1;
		while (aFile.exists) {
			aFile = File(logLoc + "/" + aName + "_" + String(n) + ".log");
			n++
		}
	}
	return aFile
}

function getScriptPath() { // This function returns the path to the active script, even when running ESTK
	try {
		return app.activeScript;
	} catch(e) {
		return File(e.fileName);
	}
}

function log(aFile, message) {
	var today = new Date();
	if (!aFile.exists) { // make new log file
		aFile.open("w");
		aFile.write(String(today) + " New Script started\n\n");
		aFile.close();
	}
	aFile.open("e");
	aFile.seek(0, 2);
	aFile.write(String(today) + " " + message + "\n");
	aFile.close();
}

Ein Gedanke zu “ReSave alle Indesign Dateien

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Kommentarlinks könnten nofollow frei sein.