[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:
(1565 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:
(1516 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:
(1496 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:
(1485 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: 12274

3. Sep 2019, 16:53
Beitrag # 5 von 8
Beitrag ID: #571741
Bewertung:
(1480 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:
(1466 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: 4673

3. Sep 2019, 18:18
Beitrag # 7 von 8
Beitrag ID: #571747
Bewertung:
(1454 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:
(1400 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

PDF / Print
pitstopp_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
25.05.2020 - 29.05.2020

Experten teilen mit Dir ihr Wissen

Online
Montag, 25. Mai 2020, 11.00 Uhr - Freitag, 29. Mai 2020, 17.45 Uhr

Seminar

Möchtest du deine Online-Reichweite vergrössern und deine digitale Präsenz optimieren? Dann könnte dich der #DigitalMarketingSummit vom 25. bis 29. Mai 2020 interessieren. An 10 Sessions zu verschiedenen Themen erhältst du je drei sofort umsetzbare Tipps. Montag 25.05.2020 Facebook für Unternehmen LinkedIn Profil und mehr Dienstag 26.05.2020 Twitter für Unternehmen Inhalt & Funktion der Webseite überprüfen Mittwoch 27.05.2020 E-Commerce (mit WooCommerce) Grundlagen für die Digitalisierung Donnerstag 28.05.2020 Google Search Ads (SEA) Google My Business (Maps Eintrag) Freitag 29.05.2020 Xing für Unternehmen Storytelling mit Instagram

Teilnahme Gratis!!
Anmeldung unter: https://digital.rogerruckstuhl.ch/digital-marketing-summit

Ja

Organisator: Roger Ruckstuhl Digital Marketing

Kontaktinformation: Eric Mächler, E-Mailinfo AT ericmaechler DOT com

https://digital.rogerruckstuhl.ch/digital-marketing-summit/

Digital Marketing Summit für Selbständige, Einzelunternehmer Dienstleister & Serviceanbieter
Veranstaltungen
02.06.2020 - 03.06.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Dienstag, 02. Juni 2020, 08.30 Uhr - Mittwoch, 03. Juni 2020, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Preis: CHF 1'400.–
Dauer: 2 Tage

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/desktop-publishing/adobe-indesign-cc/kurs-indesign-cc-basic

Neuste Foreneinträge


Dateien kopieren

Tabulator Tastendruck automatisch einfügen

Formatierung von eingefügtem Text

Grobes ICC-Profil aus wenigen gemessenen Farben

Eizo vs. BenQ

Writer / Copywriter

Time Machine löscht keine alten Dateien mehr

zwei Seiten vertauschen

Color Fonts für QuarkXPress, welches Format müssen sie haben?

Skalierungswert von Bildrahmen
medienjobs