Das folgende Skript exportiert alle InDesign-Dateien (mit der Endung ".indd") eines - während der Ausführung des Skripts auszuwählenden - Verzeichnisses in PDF-Dateien.
Dabei werden verschiedene PDF-Vorgabesets verwendet (s.u. PDF-Vorgabesets).
Beim Export erhalten die PDF-Dateien den Namen des InDesign-Dokuments (ohne die Endung ".indd"), zuzüglich einem Trennzeichen ("_") und dem Namen des PDF-Vorgabesets, das zur Herstellung der PDF- Datei verwendet wurde. Z.B.: InDesign-Datei: "Kapitel01.indd" -> "Kapitel01_email.pdf".
Als Vorgabesets werden entweder (1.) alle vorhandenen PDF-Vorgabesets verwendet (Voreinstellung) oder nur die Vorgabesets, die in der Liste unter 2. angegeben sind. Zur Aktivierung / Deaktivierung der einen oder anderen Einstellung bitte die Zuweisung auskommentieren bzw. den Kommentar entfernen.
Code //indd2pdf.js // // Exportiert alle InDesign-Dateien (mit der Endung ".indd") eines während der Ausführung des Skripts // auszuwählenden Verzeichnisses in PDF-Dateien. // Dabei werden verschiedene PDF-Vorgabesets verwendet (s.u. PDF-Vorgabesets). // Beim Export erhalten die PDF-Dateien den Namen des InDesign-Dokuments (ohne die Endung ".indd"), // zuzüglich einem Trennzeichen ("_") und dem Namen des PDF-Vorgabesets, das zur Herstellung der PDF- // Datei verwendet wurde. // Als Vorgabesets werden entweder (1.) alle vorhandenen PDF-Vorgabesets verwendet (Voreinstellung) oder // nur die Vorgabesets, die in der Liste unter 2. angegeben sind. Zur Aktivierung / Deaktivierung der einen oder anderen // Einstellung bitte die Zuweisung auskommentieren bzw. den Kommentar entfernen. // // // PDF-Vorgabesets // bitte Vorgaben unter 1. oder 2. durch Löschen der Kommentierung wählen // // 1. alle vorhandenen Vorgaben berücksichtigen var myPresets = myGetPDFPresets(); // // 2. nur die unten angegebenen Vorgaben berücksichtigen // var myPresets = ["Laserdruck", "email"]; var myDir = Folder.selectDialog ("Choose a Folder..."); var myDocs = Folder(myDir).getFiles('*.indd'); for( oneDoc = 0 ; oneDoc < myDocs.length ; oneDoc++ ){ myFile = app.open( myDocs[oneDoc]); for (onePreset=0; onePreset < myPresets.length; onePreset++){ var pdfFile = new File( myDocs[oneDoc].path +'/' + cutFileName(myDocs[oneDoc].name ) + '_' + myCleanFileName(myPresets[onePreset]) + '.pdf' ) try{ myFile.exportFile(ExportFormat.pdfType, pdfFile, false, myPresets[onePreset]); } catch(e){ alert("Error\nIst das Vorgabeset \"" + myPresets[onePreset] + "\" tatsächlich vorhanden?") }; } app.activeDocument.close( ) } // Funktion zum Abtrennen der Dateiendung function cutFileName (oneFile) { return oneFile.substring (0, oneFile.length-5) } // Funktion zum Einlesen der PDF-Vorgabesets function myGetPDFPresets(){ var myPDFPresets = new Array; for(var onePreset = 0; onePreset < app.pdfExportPresets.length; onePreset++){ myPDFPresets.push(app.pdfExportPresets.item(onePreset).name); } return myPDFPresets; } // Funktion zum Ersetzen von (hinsichtlich des Dateisystems) problematischen // Zeichen im Namen eines Vorgabesets (Slash, Backslash, Doppelpunkt) function myCleanFileName(oneFilename){ var oneFilename = String(oneFilename.split('/').join('_').split('\\').join('_').split(':').join('¯')); return oneFilename; } Dieses Skript sollte einen Bruder für Buch-Dateien bekommen (
book2pdf ).
Leider bietet der PDF-Export per Skript bei Büchern - im Gegensatz zum manuellen Export über die Benutzeroberfläche - allerdings keine Möglichkeit, ein PDF-Vorgabeset zu verwenden. Per Skript kann immer nur mit der letzten Einstellung, die über die Benutzeroberfläche verwendet wurde, exportiert werden.
Gründe für diesen Sachverhalt kann ich nicht finden.
Diese Tatsache als solche ist ärgerlich.