[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Pfad eines geöffneten Dokumentes in Skript verwenden

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

Pfad eines geöffneten Dokumentes in Skript verwenden

monomaniac
Beiträge gesamt: 6

28. Mai 2015, 14:34
Beitrag # 1 von 13
Bewertung:
(4799 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich würde gerne aus einem geöffneten Dokument ein PDF mit einem bestimmten Preset erstellen und dieses PDF mit dem gleichen Namen im gleichen Ordner abspeichern (arbeite auf PC). Ich kann zwar in Javascript meist entziffern, was welche Zeile macht, habe aber vom Programmieren keine Ahnung.
Was ich bisher gefunden habe:

var myPDFExportPreset = app.pdfExportPresets.item("druck");
app.activeDocument.exportFile(ExportFormat.pdfType, File("/c/myTestDocument.pdf"),
false, myPDFExportPreset);

Auf die Art wird in C: ein PDf des geöffneten Dokumentes mit dem Namen myTestDocument.pdf und dem Preset "druck" erzeugt. Ich müsste also diesen Teil hier ersetzen: File("/c/myTestDocument.pdf") und zwar in
File("PfadDesDokumentes/NameDesDokumentes.pdf")

Kann mir jemand sagen, ob das grundsätzlich machbar ist und wenn ja, wie? Danke schonmal.
X

Pfad eines geöffneten Dokumentes in Skript verwenden

Kai Rübsamen
Beiträge gesamt: 4684

28. Mai 2015, 20:56
Beitrag # 2 von 13
Beitrag ID: #540055
Bewertung: |||
(4732 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ja, das ist machbar. Z.B. so:

Code
// das Dokument im Vordergrund 
var curDoc = app.documents[0];
// die gespeicherte PDF-Vorlage
var pdfPreset = app.pdfExportPresets.itemByName ("Hier den Name der Vorlage eintragen");
// den Suffix vom Dokumentnamen abtrennen
var curName = curDoc.name.split(".")[0];

// der Pfad zum Ordner, in welchem sich das Dokument befindet
try {
// wenn das Dok nicht gespeichert wurde, wirft diese Zeile einen Fehler
var fPath = curDoc.filePath;
}
catch (e) {
alert ("Achtung:\rDas Dokument wurde noch nicht gespeichert!");
exit();
}

// Verweis auf die neue Datei
var theFile = (File(fPath + "/" + curName + ".pdf"));

// der eigentliche Export
if (pdfPreset.isValid) {
curDoc.exportFile(ExportFormat.PDF_TYPE , theFile , false , pdfPreset);
}
else {
alert ("Die Exportvorlage gibt es nicht!\rEs wird mit der Standardeinstellung exportiert.");
curDoc.exportFile(ExportFormat.PDF_TYPE , theFile , false);
}



als Antwort auf: [#540031]

Pfad eines geöffneten Dokumentes in Skript verwenden

monomaniac
Beiträge gesamt: 6

29. Mai 2015, 08:52
Beitrag # 3 von 13
Beitrag ID: #540064
Bewertung:
(4669 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow. Danke! Ich werds gleich mal testen und wenn alles klappt, muss meine Frau wohl damit leben, dass unser Erstgeborener, der in Kürze auf die Welt kommt wohl Kai heisen wird :-)

Edit: Es läuft!


als Antwort auf: [#540055]
(Dieser Beitrag wurde von monomaniac am 29. Mai 2015, 09:02 geändert)

Pfad eines geöffneten Dokumentes in Skript verwenden

Gerald Singelmann
  
Beiträge gesamt: 6269

29. Mai 2015, 16:28
Beitrag # 4 von 13
Beitrag ID: #540103
Bewertung: |
(4627 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Zeile ist problematisch
Code
var curName = curDoc.name.split(".")[0]; 

da es Anwender gibt, die ihre Dateien ich.will.punkte.indd nennen.

Besser
Code
var curName = curDoc.name.split("."); 
curName.pop();
curName = curName.join(".");


aber eigentlich ungeschlagen:
Code
var curName = curDoc.name.replace(/\.indd$/i,""); 



als Antwort auf: [#540055]

Pfad eines geöffneten Dokumentes in Skript verwenden

Gerald Singelmann
  
Beiträge gesamt: 6269

29. Mai 2015, 16:33
Beitrag # 5 von 13
Beitrag ID: #540104
Bewertung: |
(4625 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Noch mehr genörgel :(

Ich halte es für eine gute Idee, auf try{}catch() zu verzichten, wenn das auf einfache Weise geht.

Dieser Block geht anders:
Code
try {  
// wenn das Dok nicht gespeichert wurde, wirft diese Zeile einen Fehler
var fPath = curDoc.filePath;
}
catch (e) {
alert ("Achtung:\rDas Dokument wurde noch nicht gespeichert!");
exit();
}


,da jedes Dokument die beiden Eigenschaften .modified und .saved besitzt.

doc.saved == true, wenn das Dokument überhaupt schon mal gespeichert wurde.
doc.modified == false, wenn das Dokument seit der letzten Speicherung nicht verändert wurde.


als Antwort auf: [#540055]

Pfad eines geöffneten Dokumentes in Skript verwenden

Kai Rübsamen
Beiträge gesamt: 4684

29. Mai 2015, 18:31
Beitrag # 6 von 13
Beitrag ID: #540110
Bewertung:
(4575 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich empfinde das nicht als Genörgel. Du darfst dich ruhig hier wieder öfters beteiligen :)

Anstelle von 'split' hätte ich noch die Variante:
Code
var curName = curDoc.name.slice(0,-5); 


Das mit dem try/catch vermeiden, finde ich gut. Danke.

Ich habe es so umgeschrieben:

Code
// Name der PDF-Exportvorlage 
var pdfPresetName = "Hier den Name der Vorlage eintragen";

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// prüfen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.");
exit();
}

// das Dokument im Vordergrund
var curDoc = app.documents[0];

if (!curDoc.saved) {
alert("Achtung!\rPDF kann nicht exportiert werden, da Dokument: '" + curDoc.name + "' noch nie gespeichert wurde.");
exit();
}

// den Suffix vom Dokumentnamen abtrennen
var curName = curDoc.name.replace(/\.indd$/i,"");

// der Pfad zum Ordner, in welchem sich das Dokument befindet
var fPath = curDoc.filePath;
// Verweis auf die neue Datei
var theFile = (File(fPath + "/" + curName + ".pdf"));

// die gespeicherte PDF-Vorlage
var pdfPreset = app.pdfExportPresets.itemByName(pdfPresetName);

// der eigentliche Export
if (pdfPreset.isValid) {
curDoc.exportFile(ExportFormat.PDF_TYPE , theFile , false , pdfPreset);
}
else {
alert ("Die Exportvorlage gibt es nicht!\rEs wird mit der Standardeinstellung exportiert.");
curDoc.exportFile(ExportFormat.PDF_TYPE , theFile , false);
}



als Antwort auf: [#540104]

Pfad eines geöffneten Dokumentes in Skript verwenden

kkauer
Beiträge gesamt: 661

29. Mai 2015, 18:52
Beitrag # 7 von 13
Beitrag ID: #540113
Bewertung:
(4556 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Warum ein Fallback auf einen Standard-Export wenn die Aufgabe klar als "Export mit einem spezifischen Setting" definiert wurde?


als Antwort auf: [#540110]

Pfad eines geöffneten Dokumentes in Skript verwenden

Kai Rübsamen
Beiträge gesamt: 4684

29. Mai 2015, 19:05
Beitrag # 8 von 13
Beitrag ID: #540115
Bewertung:
(4545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Karsten, das hab ich mich zwischendurch auch gefragt u. dann einfach drin gelassen. Der Fallback macht eigentlich keinen Sinn u. das Skript sollte dann besser abbrechen.

Und ja, das Skript sollte eigentlich einen Hinweis bringen, falls es an dieser Stelle bereits ein PDF mit gleichem Namen gibt. Das hat diese Version noch nicht.

Code
// Name der PDF-Exportvorlage 
var pdfPresetName = "highres";

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// prüfen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.");
exit();
}

// das Dokument im Vordergrund
var curDoc = app.documents[0];

if (!curDoc.saved) {
alert("Achtung!\rPDF kann nicht exportiert werden, da Dokument: '" + curDoc.name + "' noch nie gespeichert wurde.");
exit();
}

// den Suffix vom Dokumentnamen abtrennen
var curName = curDoc.name.replace(/\.indd$/i,"");

// der Pfad zum Ordner, in welchem sich das Dokument befindet
var fPath = curDoc.filePath;
// Verweis auf die neue Datei
var theFile = (File(fPath + "/" + curName + ".pdf"));

// prüfen, ob die PDF-Vorlage vorhanden ist und Dok exportieren
var pdfPreset = app.pdfExportPresets.itemByName(pdfPresetName);
if (!pdfPreset.isValid) {
alert ("Achtung:\rDie angegebene Exportvorlage fehlt!");
exit();
}
else {
alert("Hinweis:\rDas PDF wird mit der Vorlage '" + pdfPresetName + "' exportiert!");
curDoc.exportFile(ExportFormat.PDF_TYPE , theFile , false , pdfPreset);
}



als Antwort auf: [#540113]
(Dieser Beitrag wurde von Kai Rübsamen am 29. Mai 2015, 19:25 geändert)

Pfad eines geöffneten Dokumentes in Skript verwenden

kkauer
Beiträge gesamt: 661

29. Mai 2015, 19:46
Beitrag # 9 von 13
Beitrag ID: #540117
Bewertung:
(4515 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
nun ist es ganz kapøtt, machen wir Feierabend/WE ;)

EDIT: Ich habe mich "verlesen"! Das wäre eine Möglichkeit.


als Antwort auf: [#540115]
(Dieser Beitrag wurde von kkauer am 29. Mai 2015, 20:05 geändert)

Pfad eines geöffneten Dokumentes in Skript verwenden

Uwe Laubender
Beiträge gesamt: 5319

30. Mai 2015, 08:53
Beitrag # 10 von 13
Beitrag ID: #540123
Bewertung:
(4385 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Kai Rübsamen ] Und ja, das Skript sollte eigentlich einen Hinweis bringen, falls es an dieser Stelle bereits ein PDF mit gleichem Namen gibt. Das hat diese Version noch nicht.


Hallo, Kai!

Es gibt noch 'ne Möglichkeit weshalb der Export schiefgehen könnte: Das PDF wurde bereits geschrieben, kann aber nicht überschrieben werden, da z.B. in Acrobat Pro geöffnet.

Diese Situation könnte man umgehen, indem der Dateiname eine "einzigartige" Komponente enthält. Zum Beispiel das Ergebnis aus Date.now() als String. Ist aber hier nicht "in Auftrag gegeben".


als Antwort auf: [#540115]

Pfad eines geöffneten Dokumentes in Skript verwenden

Uwe Laubender
Beiträge gesamt: 5319

30. Mai 2015, 09:58
Beitrag # 11 von 13
Beitrag ID: #540126
Bewertung:
(4349 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Gerald Singelmann ] aber eigentlich ungeschlagen:
Code
var curName = curDoc.name.replace(/\.indd$/i,""); 



Hallo, Kai!
Gerald hat vollkommen recht. Diese Methode ist ungeschlagen, denn sie deckt mehrere "Fälle" ab:

1. Klein/Groß/Gemischtschreibung der Endung ist egal
2. Funktioniert, ob nun eine Endung vorhanden ist oder *nicht*
3. Funktioniert auch, wenn keine Endung vergeben ist und der Dateiname die Anzahl von 6 Zeichen unterschreitet

Deine Methode mit slice() zieht immer 5 Zeichen am Namensende ab.

Ich weiss, die Chance, dass jemand seine InDesign-Dateien *ohne* Endung speichert ist gering, aber immerhin gegeben.


als Antwort auf: [#540103]

Pfad eines geöffneten Dokumentes in Skript verwenden

Kai Rübsamen
Beiträge gesamt: 4684

7. Aug 2015, 13:17
Beitrag # 12 von 13
Beitrag ID: #541831
Bewertung:
(3586 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Zitat Es gibt noch 'ne Möglichkeit weshalb der Export schiefgehen könnte: Das PDF wurde bereits geschrieben, kann aber nicht überschrieben werden, da z.B. in Acrobat Pro geöffnet.

Ist das so?

Gerade mal getestet. Das PDF ist in Acrobat offen. PDF exportiert mit try/catch und eigentlich einen Fehler erwartet. Es gibt aber keinen. Stattdessen bleibt das Dokument in Acrobat geöffnet und verweist auch auf einen Pfad. Der Finder zeigt aber ein neues Speicherdatum. Nach Schließen und erneutem Öffnen zeigt dann das PDF den neuen Inhalt.


als Antwort auf: [#540123]

Pfad eines geöffneten Dokumentes in Skript verwenden

Uwe Laubender
Beiträge gesamt: 5319

7. Aug 2015, 13:50
Beitrag # 13 von 13
Beitrag ID: #541833
Bewertung:
(3576 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Kai!
Das ist mir neu.

Hatte den Fall vor ein paar Jahren, damals mit InDesign CS5 und Adobe Reader 9 getestet. Genauer gesagt, es ging damals darum den PDF-Export nicht im Hintergrund ablaufen zu lassen, sondern nach der alten Methode im Vordergrund (CS4 und davor).


als Antwort auf: [#541831]
X

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!