Hallo zusammen,
ich habe versucht aus 2 Skripten eines zu machen. Leider hackt es nun bei der Feinarbeit und ich finde den Fehler nicht.
Könnt ihr mir bitte kurz helfen?
Er macht alles bis zum Schluss und dann bringt er die Warnmeldung ob es das Setting wirklich gibt, es ist auf dem Rechner aber vorhanden.
Hier sind die Skripte:
Mein neues:
Code // Teil 1: Öffnen fileType = "*.indd"; var topFolder = Folder.selectDialog ("Wähle einen Ordner aus"); inputFileType = "*.indd" //prompt("input file type like '*.indd'", fileType); if(inputFileType != null) { fileType = inputFileType; } scanSubFolders(topFolder); function scanSubFolders(tFolder) { var sFolders = new Array(); var allFiles = new Array(); sFolders[0] = tFolder; for (var j = 0; j < sFolders.length; j++) // loop through folders { var procFiles = sFolders[j].getFiles(); for (var k=0;k<procFiles.length;k++) // loop through this folder contents { if (procFiles[k] instanceof File) allFiles.push(procFiles[k]); else if (procFiles[k] instanceof Folder) sFolders.push(procFiles[k]); var letzt = procFiles[k]; var myArray = letzt.name.split("."); var myLast = myArray.pop(); if (myLast == "indd") {app.open(letzt)}; } } } // 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; } // Teil 2: Verpacken & PDF erstellen do { if (app.documents.length !=0) { // Name der aktiven Datei var myDocFullName = app.activeDocument.fullName; // Ordnername var myFolderName = String(myDocFullName).replace(/\.indd/,' '); // Ordner erstellen var f = new Folder (myFolderName); f.create(); // Verpacken app.activeDocument.packageForPrint (f , true, true, true, true, true, true, true); // PDF erstellen var myPresets = ["Kleinste Dateigröße+Hyperlinks+Lesezeichen"]; for (onePreset=0; onePreset < myPresets.length; onePreset++) { var pdfFile = new File( f + '/' + myFolderName + '.pdf' ) try { app.activeDocument.exportFile(ExportFormat.pdfType, pdfFile, false, myPresets[onePreset]); } catch(e) { alert("Error\nIst das Vorgabeset \"" + myPresets[onePreset] + "\" tatsächlich vorhanden?") }; } // Dokument schließen app.activeDocument.close(SaveOptions.NO); } } while(app.documents.length !=0); Das verpacken Skript:
Code // Backup_Verpacken.jsx //DESCRIPTION: Verpackt InDesign-Dateien eines ausgewählten Verzeichnisses und dessen Unterverzeichnissen in namensgleiche Unterverzeichnisse. // // Holger aka Krings // 9.2.2009 // // Teil 1: Öffnen // fileType = "*.indd"; var topFolder = Folder.selectDialog ("Wähle einen Ordner aus"); inputFileType = "*.indd" //prompt("input file type like '*.indd'", fileType); if(inputFileType != null) { fileType = inputFileType; } scanSubFolders(topFolder); function scanSubFolders(tFolder) { var sFolders = new Array(); var allFiles = new Array(); sFolders[0] = tFolder; for (var j = 0; j < sFolders.length; j++) // loop through folders { var procFiles = sFolders[j].getFiles(); for (var k=0;k<procFiles.length;k++) // loop through this folder contents { if (procFiles[k] instanceof File) allFiles.push(procFiles[k]); else if (procFiles[k] instanceof Folder) sFolders.push(procFiles[k]); var letzt = procFiles[k]; var myArray = letzt.name.split("."); var myLast = myArray.pop(); if (myLast == "indd") {app.open(letzt)}; } } } // Teil 2: Verpacken do{ if(app.documents.length !=0){ // Name der aktiven Datei var myDocFullName = app.activeDocument.fullName; // Ordnername var myFolderName = String(myDocFullName).replace(/\.indd/,' '); // Ordner erstellen var f = new Folder (myFolderName); f.create(); // Verpacken app.activeDocument.packageForPrint (f , true, true, true, true, true, true, true); } app.activeDocument.close(SaveOptions.NO); } while(app.documents.length !=0); Das PDF Skript von Martin Fischer:
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; } Viele Grüße
Peter