Moin Moin.
Ich war auf der suche nach einem Skript, welcher ein Datenblatt mit Daten aus einer .csv per batch als .pdf exportiert. Ich konnte schnell einen Skript finden der dies ermöglichte.
Blöderweise funktioniert dieser nur mit einmal pro InDesign file. 130 Produkte mit verschiedenen Attributen machen das ganze riesig. Alles in einem .csv file. Ich hoffe Ihr versteht was ich hier zu beschreiben versuche.
Die Lösung wäre ein dynamischer Dateiname, wenn ich den batch ausführe. Ich bekomms einfach nicht hin
Der Dateiname steckt in der ersten Spalte der .csv und sollte doch irgendwie verwendbar sein.
Es hat wie mir scheint etwas mit 'dataMergeProperties' zu tun. Kann man im Skript bei der Datenzusammenführung auch direkt auf die Variable <<NAME>> hinweisen?
Fragen über Fragen. Fühlt sich an als ob mein Kopf jeden Moment platzen würde.
Als Vorlage benutze ich diese beiden Skripte. Den ersten wollte ich versuchen provisorisch zum Laufen bringen: vergebens...
Code var myPresets = ["Datasheet"]; var myDoc = app.documents.firstItem(); var myFilePath = (myDoc.saved == true) ? myDoc.filePath : '~/Desktop'; for (onePreset=0; onePreset < myPresets.length; onePreset++){ var pdfFile = new File( myFilePath +'/' + cut_suffix(myDoc.name ) + '_' + myCleanFileName(myPresets[onePreset]) + '.pdf' ) try{ myDoc.exportFile(ExportFormat.pdfType, pdfFile, false, myPresets[onePreset]); } catch(e){ alert("Error\nIst das Vorgabeset \"" + myPresets[onePreset] + "\" tatsächlich vorhanden?") }; } // Funktion zum Abtrennen der Dateiendung function cut_suffix (oneFile) { return oneFile.replace(/.indd$/i, '') ; } // 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; } Bei dem zweiten sind die Dateinamen Zusammensetzung interessant für mich. Den Code hab ich ein bisschen verkürzt. Jegliche Hilfe würde mir gut tun. Ich danke schonmal herzlichst im voraus.
Code //csv einlesen var fileNames = new Array(); csvFile.open('r'); while (!csvFile.eof) { fileNames.push(csvFile.readln().split(csvSeparator)[fileNameColumn-1]); } csvFile.close(); var currDoc = app.activeDocument;//vorbereitetes Dokument currDoc.dataMergeOptions.createNewDocument = true; var maxRange = currDoc.dataMergeProperties.dataMergePreferences.recordRange.split('-')[1];//Anzahl der Datensätze in der CSV //schleife durch die Datensätze for(var i = 0; i < maxRange; i++) { with(currDoc.dataMergeProperties.dataMergePreferences) { recordSelection = RecordSelection.ONE_RECORD; recordNumber = i+1; } currDoc.dataMergeProperties.mergeRecords(); app.activeDocument.save(File(destFolderPath +fileNames[i+1] + '.indd')); // Alle offenen Dokumente verarbeiten for( oneDoc = 0 ; oneDoc < myDocs.length ; oneDoc++ ){ myCounter++; myFile = myDocs[oneDoc]; progress.file.text = myCounter+"/"+maxDocs+": "+myFile.name; progress.bar.value= myCounter*2-1; myFile.save(); progress.bar.value= myCounter*2-0.01; if (myFile.saved) { // Entscheiden, ob auf Schreibtisch oder im Dokumentordner exportiert wird if (dlg.savetodesktop.value) { var path = '~/Desktop'; } else { var path = myFile.filePath; } // Dateiname setzen var pdfFile = new File( path +'/' + cutFileName(myFile.name ) + suffix + '.pdf' ) try{ // PDF exportieren myFile.exportFile(ExportFormat.pdfType, pdfFile, false, myPreset.toString() ); exportedDocs++; } catch(e){ errors = errors + "\n" + myFile.name + localize(msgExportError); }; } else { errors = errors + "\n" + myFile.name + localize(msgSaveError); } if (dlg.closedocs.value) { myFile.close(); oneDoc--;} }