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.
Pfad eines geöffneten Dokumentes in Skript verwenden
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!
(Dieser Beitrag wurde von monomaniac am 29. Mai 2015, 09:02 geändert)
Pfad eines geöffneten Dokumentes in Skript verwenden
Ich halte es für eine gute Idee, auf try{}catch() zu verzichten, wenn das auf einfache Weise geht.
Dieser Block geht anders:
,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.
Pfad eines geöffneten Dokumentes in Skript verwenden
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.
Gruß Kai Rübsamen
(Dieser Beitrag wurde von Kai Rübsamen am 29. Mai 2015, 19:25 geändert)
Pfad eines geöffneten Dokumentes in Skript verwenden
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". ***** Mit herzlichem Gruß, Uwe Laubender
Pfad eines geöffneten Dokumentes in Skript verwenden
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. ***** Mit herzlichem Gruß, Uwe Laubender
Pfad eines geöffneten Dokumentes in Skript verwenden
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.
Gruß Kai Rübsamen
Pfad eines geöffneten Dokumentes in Skript verwenden
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). ***** Mit herzlichem Gruß, Uwe Laubender