Automatisieren des Befehls Speichern unter für mehrere geöffnete Dateien in der Vorschau

448
davec0864

Ich verwende Mac OS, um ein Dienstprogramm des täglichen Geschäfts auszuführen, mit dem elf (11) Berichte erstellt werden, die als PDF gedruckt werden und die Dateien in der Mac-Vorschau geöffnet werden. Die Dateien werden mit generischen Dateinamen wie "Constant.pdf" oder "Estim..pdf" erstellt. Ich habe einen Ordner mit leeren PDF-Dateien, die ich als "Vorlage" zum Speichern dieser Dateien mit den entsprechenden Dateinamen verwende. Jede leere PDF-Datei hat den Dateinamen, den ich für jeden der geöffneten PDF-Berichte verwenden möchte. Ich mache dies manuell, indem ich die erste geöffnete PDF-Datei nehme und Cmd+ + Option+ Shiftdrücke S(um auf den Befehl Speichern unter zuzugreifen), die Datei markieren, in der "Speichern unter" im Finder-Fenster angezeigt werden soll, auf "Speichern" klicken, auf "Ersetzen" klicken und dann Ich schließe die PDF-Datei. Ich wiederhole diesen Schritt mit den restlichen 10 Dateien.

Ich hoffe, dass es einen Weg gibt, diese Schritte zu automatisieren. Glücklicherweise werden die PDF-Dateien in einer bestimmten Reihenfolge gedruckt / erstellt und in der Vorschau werden die Dateien in dieser Reihenfolge geöffnet. Sie werden in derselben Reihenfolge angezeigt, in der ich manuell speichere und die Dateien schließe. Der Automator müsste also wissen, welche Dateinamen den einzelnen PDF-Dateien nacheinander zugewiesen werden müssen.

Irgendwelche Vorschläge?

0
Ja, einfach. Was passiert mit den PDF-Dateien, nachdem sie gespeichert wurden? Bleiben sie dort oder werden sie bewegt? Ich frage mich also, was passiert am nächsten Tag und wie die nächsten 11 benannt werden - vermutlich anders als die 11 vom vorherigen Tag? Öffnen alle 11 PDF-Dateien auch schnell nacheinander oder handelt es sich eher um eine PDF-Datei pro Stunde? CJK vor 5 Jahren 0
Die 11 PDFs werden in etwa einer Minute, vielleicht zwei, erstellt und geöffnet. Speichern Sie die einzelnen Dateien beim Öffnen zu schnell. davec0864 vor 5 Jahren 0
Entschuldigen Sie die Eingabetaste. Die Dateien werden in eindeutigen Ordnern mit eindeutigen Pfadnamen gespeichert. Ich habe einen "Vorlagen" -Ordner, den ich jedes Mal dupliziere und umbenenne, wenn ich diese Berichte erstellen muss. davec0864 vor 5 Jahren 0
Gut - eigentlich für ein Skript, je schneller, desto besser. Ein Skript beschreibt, wie Sie Ihr Problem lösen würden, z. B. AppleScript. Wären Sie auch bereit, Ihre PDF-Vorlagen mit einer führenden Indexnummer zu benennen, die einem Skript die Reihenfolge mitteilt, in der die Dateien benannt werden sollen? Zum Beispiel würde Ihre dritte PDF-Vorlage, die derzeit `" some_file_name.pdf "" heißt, zu "3-some_file_name.pdf" `werden, was dann dazu führen würde, dass die dritte PDF-Datei als" some_file_name.pdf "gespeichert wird. ohne die "3-" `). CJK vor 5 Jahren 0
Ja, ich kann das zu jeder Vorlagendatei hinzufügen. davec0864 vor 5 Jahren 0

1 Antwort auf die Frage

0
CJK

Erstellen Sie einen Ordner, in dem sich Ihre 11 PDF-Vorlagen dauerhaft befinden können. Präfix ihre Dateinamen mit 01-, 02-, ..., 10-, 11-die Reihenfolge anzuzeigen, in der PDF - Dateien verarbeitet werden gespeichert (es ist wichtig, dass Vorlagen 1-9 ein führender haben 0vorne).

Ändern Sie im folgenden Skript den Wert der Eigenschaft templatesFolder(Zeile 1), um den Pfad zu dem Ordner anzugeben, in dem sich die PDF-Vorlagen befinden.

Um das Skript verwenden zu können, lassen Sie zu, dass alle 11 PDFs in der Vorschau geöffnet werden können. Führen Sie dann das Skript aus. Sie können das Skript in einen Automator- Dienst integrieren und ihm eine Tastenkombination zuweisen. Anweisungen, wie Sie einen systemweiten Service mit Automator einrichten können, finden Sie unter diesem Link.

Bei der Ausführung öffnet das Skript ein Dateisystemdialogfeld, in dem Sie einen Ordner auswählen können, in dem die verarbeiteten PDF-Dateien gespeichert werden sollen. Cancelbricht das Skript ab. Sobald Sie auf klicken Choose, werden die PDF-Dateien in der Reihenfolge gespeichert, in der sie geöffnet wurden. Dabei werden die Dateinamen der Vorlagen-PDFs verwendet (jedoch ohne Präfix). Jedes PDF wird dann geschlossen, die Vorschau wird geschlossen und die gespeicherten PDFs werden im Finder angezeigt .

Das Skript:

property templatesFolder : "~/Documents/PDFs/Templates"  set saveFolder to POSIX path of ¬ (choose folder with prompt ("Select a folder to save PDFs") ¬ default location path to documents folder)  tell application "System Events" to set pdfTemplates to the ¬ name of the files in folder templatesFolder ¬ whose name extension is "pdf"  set filenames to sort(the result)  repeat with D in my getPreviewDocumentsInOrder() set filename to text 4 thru -1 of item 1 of filenames set fp to POSIX file ([saveFolder, filename] as text) tell application "Preview" save D in fp close D end tell set filenames to rest of filenames if filenames = {} then exit repeat end repeat  quit application "Preview"  tell application "Finder" open POSIX file saveFolder activate end tell -------------------------------------------------------------------------------- ###HANDLERS # # to getPreviewDocumentsInOrder() script use P : application "Preview" property idx : sort(id of P's windows)  on docList(IDs) local IDs  if IDs = {} then return {} script property L : IDs end script  tell the result to set [d0, dN] to [first item, rest] of its L tell P to return & my docList(dN) end docList end script  tell the result to return the docList(its idx) end getPreviewDocumentsInOrder  to sort(L as list) local L  if L = {} then return {} if L's length = 1 then return L  script property Array : L  on minimum(L as list) local L  if L is {} then return {} if L's length = 1 then return L's first item  script property Array : L end script  set [x0, xN] to [first item, rest] of the result's Array set min to minimum(xN) if x0 < min then return x0 return min end minimum  on lastIndexOf(x, L as list) local x, L  if x is not in L then return {} if L = {} then return  script property Array : L end script  tell the result set [x0, xN] to [last item, reverse of rest of reverse] of its Array if x0 = x then return (xN's length) + 1 return lastIndexOf(x, xN) end tell end lastIndexOf  to swap(L as list, i as integer, j as integer) local i, j, L  set x to item i of L set item i of L to item j of L set item j of L to x end swap end script  tell the result set i to lastIndexOf(minimum(its Array), its Array) if i ≠ 1 then swap(its Array, 1, i) set [x0, xN] to [first item, rest] of its Array return [x0] & sort(xN) end tell end sort 
Perfekt! Vielen Dank! Gibt es eine Möglichkeit, den Standardpfad "select" so zu gestalten, dass er wie folgt aussieht ... DaveC: Benutzer: Dave: Dokumente: Unternehmen: Audits: Berichte: Projekte. Müsste nicht mehr drin sein, um den Speicherpfad zu wählen. Vielen Dank! davec0864 vor 5 Jahren 0
Ja - wenn Sie in der fünften Zeile nachsehen, ist ein Teil des Befehls "select folder" eine Eigenschaft mit dem Namen "default location", die Sie als Standardpfad "select" auf einen beliebigen Ordner festlegen können. Sie können es entweder mit einem posix-Pfad so einstellen: `Standardposition POSIX-Datei" / Users / CK / Documents "`; oder über einen HFS-Pfad: `Standard-Aliasname" Macintosh HD: Benutzer: CK: Dokumente: "`. CJK vor 5 Jahren 0
Wenn ich diesen Code hinzufüge, erhalte ich die folgende Meldung "Kann nicht machen" Dave Clark: Benutzer: dclark: Documents: Company Stuff: Projektprüfungen: Neue Finanzberichterstattung: Berichte "in Typkonstante". Ist der Weg zu lang? Das Skript funktioniert auch perfekt in meinem Testordner, aber wenn ich die eigentlichen Dateien in die Produktion stecke, wird die erste Datei übersprungen. Irgendwelche Ideen??? davec0864 vor 5 Jahren 0
Sie haben die Eigenschaft `default location 'nicht so geschrieben, wie ich es beschrieben habe. Sie sind in "Pfad zu" gegangen. Warum scheint es, dass es an einem Ort und nicht an einem anderen arbeitet, kann ich keinen Grund dafür erkennen. Ich benötige weitere Informationen darüber, was Ihren Testordner und Ihren Produktionsordner oder deren Dateien unterscheidet. CJK vor 5 Jahren 0
Ich entschuldige mich. Ich bin kein Schüler von Applescript und habe Ihre Anweisungen wörtlich genommen. Bitte verzeih mir. Du warst so hilfreich. Gibt es eine Möglichkeit, wie ich Ihnen Screenshots der Ordnerstruktur senden kann? davec0864 vor 5 Jahren 0
Tut mir Leid, dich warten zu lassen. Sie können Screenshots in [meine Dropbox] (http://inbox.chri.sk) hochladen. Haben Sie persönliches Glück gehabt, um herauszufinden, warum die eine Datei in einem bestimmten Fall ausgelassen wird? CJK vor 5 Jahren 0
Der Unterschied bestand in meinem Testordner. Ich hatte eindeutige Dummy-Dateien mit fortlaufender Nummerierung erstellt, so dass es einfach war, dem Skript zu folgen. In der Produktionsversion haben die PDF-Dateien alle denselben Namen (siehe Screenshot, den ich an Ihre Dropbox gesendet habe). Nachdem ich herausgefunden hatte, welche Datei 01, 02 usw. war, konnte ich eine "Dummy" -Datei im Vorlagenordner mit der fehlenden Nummer hinzufügen. Jetzt funktioniert es einwandfrei. Ich denke, das hatte mit der Art und Weise zu tun, wie die Vorschau die Dateien im Fenster-Menü sortierte, weil die oberste in der Liste die war, die übersprungen wurde. Es funktioniert jetzt. Vielen Dank! davec0864 vor 5 Jahren 0