AW: InDesign CS6 und Automatisieren mit Export
So, hatte jetzt endlich kurz Zeit, das Script zu erstellen:
Code:
main();
var quellDokument;
function main(){
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
if (app.documents.length != 0){
if (SetAndCheckquellDokument ()){
for(Seite = 0; Seite < quellDokument.pages.count(); Seite++)
if (NeuesDokumentErzeugen(Seite+1, quellDokument.pages[Seite]) == false)
break;
}
else {
alert("Die Datei enthält keine gültigen Daten.");
}
}
else{
alert("Es ist kein Dokument geöffnet. Bitte öffnen Sie ein Plakatdokument.");
}
}
function SetAndCheckquellDokument()
{
quellDokument = app.activeDocument;
if (quellDokument.pages.count() > 0)
return true;
else
return false;
}
function NeuesDokumentErzeugen(Nummer, Seite)
{
var dateinameRahmen = Seite.textFrames.itemByName("DerDateiname");
if (dateinameRahmen != null)
{
var dateiname = dateinameRahmen.contents;
var neuesDokument = app.documents.add(false);
Seite.duplicate(LocationOptions.AFTER,neuesDokument.pages.item(0));
neuesDokument.pages.item(0).remove();
var neuesDokumentDateinameRahmen = neuesDokument.pages.item(0).textFrames.itemByName("DerDateiname");
neuesDokumentDateinameRahmen.remove();
neuesDokument.save(dateiname);
neuesDokument.close();
var myDialog;
with(myDialog = app.dialogs.add({name:"Seite in neue Datei kopiert"})){
with(dialogColumns.add()){
staticTexts.add({staticLabel: "Seite "+Nummer+" wurde in die neue Datei \""+ dateiname+ "\" kopiert"});
}
}
myResult = myDialog.show();
myDialog.destroy();
return myResult;
}
else
{
var myDialog;
with(myDialog = app.dialogs.add({name:"Fehler"})){
with(dialogColumns.add()){
staticTexts.add({staticLabel: "Fehler auf Seite "+Nummer+": Der Dateiname wurde nicht gefunden!"});
}
}
myResult = myDialog.show();
myDialog.destroy();
return myResult;
}
}
Mit Klick auf "Abbrechen" beim Ablauf des Scripts kann dieses abgebrochen werden. Soll das Script ohne "OK"-Klicks durchlaufen (könnte bei 200 Plakaten ja nervig werden), dann einfach das erste oder beide Dialogfelder im Script entfernen.
Spannend ist in diesem Script diese Zeile
Code:
var dateinameRahmen = Seite.textFrames.itemByName("DerDateiname");
In diesem Feld steht der Dateiname der zu erstellenden Datei
inkl. der Pfadangabe.
Im Serienbasisdokument (im InDesign-Slang: Datei mit Datenzusammenführung) muss, damit das Script arbeiten kann, der Textrahmen mit dem Dateinamen diesen Namen bekommen ("DerDateiname"). Im Ebenenpanel den Objektbaum aufklappen und dem Textrahmen den Namen zuweisen:
Nachdem das Seriendokument erstellt worden ist (Im InDesign-Slang: Zusammengeführtes Dokument erstellen) kann auf diese Ergebnisdatei das Script angewendet werden.
Eine Beispieldatei mit Ergebnis habe ich hochgeladen.
Gruß
Ralf