[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Datenzusammenfassungen als Dateiname

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Datenzusammenfassungen als Dateiname

Roody4ever
Beiträge gesamt: 5

2. Sep 2019, 19:59
Beitrag # 1 von 8
Bewertung:
(1394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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--;}
}

X

Datenzusammenfassungen als Dateiname

Roody4ever
Beiträge gesamt: 5

3. Sep 2019, 13:26
Beitrag # 2 von 8
Beitrag ID: #571735
Bewertung:
(1345 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Update:

Folgender Link sieht interessant aus. Bekomme jedoch keine ausführliche Information zu dem Script und der Sample funktioniert auch nicht :(

https://colecandoo.com/2017/03/05/data-merge-to-uniquely-named-interactive-pdfs/


als Antwort auf: [#571725]

Datenzusammenfassungen als Dateiname

Roody4ever
Beiträge gesamt: 5

3. Sep 2019, 16:23
Beitrag # 3 von 8
Beitrag ID: #571738
Bewertung:
(1325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Grosses Update:

Durch suchen und stöbern bin ich auf den Code gestossen, welcher funktioniert!!

Code
var fileNameColumn = 1;//Bitte hier die Spaltennummer eintragen, in der in der CSV der neue Dateiname hinterlegt ist.  
var csvSeparator = ','//Bitte hier den Separator der CSV-Datei eintragen

var destFolderPath = Folder.selectDialog('Zielordner wählen').absoluteURI + '/' ;
var csvFile = File.openDialog('CSV-Datei wählen');

//csv einlesen
var fileNames = new Array();
csvFile.open('r');
while (!csvFile.eof) {
fileNames.push(csvFile.readln().split(csvSeparator)[fileNameColumn-1]);
}
csvFile.close();



//var myPresets = ["Datasheet"];


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'));
app.activeDocument.close();
}
function myGetPDFPresets(){
var myPDFPresets = new Array;
for(var onePreset = 0; onePreset < app.pdfExportPresets.length; onePreset++){
myPDFPresets.push(app.pdfExportPresets.item(onePreset).name);
}
return myPDFPresets;
}


Nun bin ich seit Stunden dabei, den Export als .pdf zu bewerkstelligen, anstatt es als .indd zu speichern. Keine Ahnung was ich hier falsch mache. Hat jemand eine Vervollständigung zu diesem Lösungsansatz? Ein Dank geht an alle Helfer und Brains da draussen!


als Antwort auf: [#571735]

Datenzusammenfassungen als Dateiname

-hans-
Beiträge gesamt: 746

3. Sep 2019, 16:48
Beitrag # 4 von 8
Beitrag ID: #571740
Bewertung:
(1314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
huhu,

pdf erstellen geht über die Methode 'exportFile'

schau mal hier: https://www.indesignjs.de/...l#d1e49265__d1e53630
Lieben Gruß

Hans-Gerd Claßen


als Antwort auf: [#571738]
(Dieser Beitrag wurde von -hans- am 3. Sep 2019, 16:49 geändert)

Datenzusammenfassungen als Dateiname

Martin Fischer
  
Beiträge gesamt: 12265

3. Sep 2019, 16:53
Beitrag # 5 von 8
Beitrag ID: #571741
Bewertung:
(1309 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roody4ever,

verwende zum Exportieren in PDF den exportFile()-Befehl des Dokument-Objekts.

Beispiel (gegeben ein Array myPDFPresets mit PDF-Vorgaben):
Code
var pdfFile = new File('~/Desktop/test.pdf'); 
var pdfPreset = myPDFPresets[0];

app.activeDocument.exportFile(ExportFormat.pdfType, pdfFile, false, pdfPreset);


Platziere den Exportbefehl vor oder nach der Stelle, an der bislang das Dokument gesichert wird.

Viele Grüße
Martin




als Antwort auf: [#571738]

Datenzusammenfassungen als Dateiname

Roody4ever
Beiträge gesamt: 5

3. Sep 2019, 17:48
Beitrag # 6 von 8
Beitrag ID: #571745
Bewertung:
(1295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
YESSSS!!

Danke für eure Antworten und danke an das HDS Forum selbst.
Der JavaSkript läuft ganz zu meiner Zufriedenheit.

Code
var fileNameColumn = 1;//Bitte hier die Spaltennummer eintragen, in der in der CSV der neue Dateiname hinterlegt ist.  
var csvSeparator = ','//Bitte hier den Separator der CSV-Datei eintragen

var destFolderPath = Folder.selectDialog('Zielordner wählen').absoluteURI + '/' ;
var csvFile = File.openDialog('CSV-Datei wählen');

//csv einlesen
var fileNames = new Array();
csvFile.open('r');
while (!csvFile.eof) {
fileNames.push(csvFile.readln().split(csvSeparator)[fileNameColumn-1]);
}
csvFile.close();



var myPresets = ["Datasheet"];


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();
var myDoc = app.documents.firstItem();
var myFilePath = (myDoc.saved == true)
? myDoc.filePath
: '~/Desktop/DATA';
var pdfFile = new File( destFolderPath +fileNames[i+1] + '.pdf' );
var pdfPreset = myPresets[0];

app.activeDocument.exportFile(ExportFormat.pdfType, pdfFile, false, pdfPreset)
app.activeDocument.save(File(destFolderPath +fileNames[i+1] + '.indd'));


app.activeDocument.close();
}
function myGetPDFPresets(){
var myPDFPresets = new Array;
for(var onePreset = 0; onePreset < app.pdfExportPresets.length; onePreset++){
myPDFPresets.push(app.pdfExportPresets.item(onePreset).name);
}
return myPDFPresets;
}



als Antwort auf: [#571725]

Datenzusammenfassungen als Dateiname

Uwe Laubender
Beiträge gesamt: 4643

3. Sep 2019, 18:18
Beitrag # 7 von 8
Beitrag ID: #571747
Bewertung:
(1283 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: huhu,

pdf erstellen geht über die Methode 'exportFile'

schau mal hier: https://www.indesignjs.de/...l#d1e49265__d1e53630


Oder aber über:

asynchronousExportFile()

Details z.B. hier:
https://www.indesignjs.de/...d1e208127__d1e209675

Als Alternative zu exportFile(), falls folgender Bug eine Rolle spielen sollte:


[JS][CS4/CS5] Images dropping off in scripted pdf export
https://forums.adobe.com/message/3876223#3876223

Zitat The problem: Placed Illustrator files (and pdfs) drop off of exported pdfs, without any kind of error being raised, after a user tries to interact with InDesign while it's tied up during a script which opens and exports one file after another. Once an image drops off, it will be missing from every subsequently exported pdf until the script completes. The pdfs are valid—they open and display just fine—they just don't contain all the images they're supposed to. Placed raster images are not affected.

*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#571740]

Datenzusammenfassungen als Dateiname

Roody4ever
Beiträge gesamt: 5

4. Sep 2019, 11:03
Beitrag # 8 von 8
Beitrag ID: #571752
Bewertung:
(1229 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: asynchronousExportFile()

Details z.B. hier:
https://www.indesignjs.de/...d1e208127__d1e209675

Als Alternative zu exportFile(), falls folgender Bug eine Rolle spielen sollte:


[JS][CS4/CS5] Images dropping off in scripted pdf export
https://forums.adobe.com/message/3876223#3876223


Werde die Augen offen halten. Danke Uwe!


als Antwort auf: [#571747]
X

Aktuell

Diverses

| 14.02.2020

die-einstellungen_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic

Neuste Foreneinträge


Konturstärke von Vektorgrafiken automatisch "korrigieren"

Alternativen zu Acrobat

Folder-Objekt mit Pfad als Argument

Preflight-Bedienfeld zeigt keine Einträge

QR-Codes nachträglich formatieren

DONE | Adobe XD - Gestrichelte Linie fortführend anzeigen lassen

Adobe XD - Gestrichelte Linie fortführend anzeigen lassen

Caldera RIP EasyMedia

InCopy

Bold-Schriftschnitt wird unter Word 365 (Mac) nicht korrekt dargestellt
medienjobs