Ich habe einen Automator-Dienst zum Extrahieren von PDF-Text und zum Speichern im aktuellen Verzeichnis erstellt, und er funktioniert recht gut.
Es nimmt eine oder mehrere PDF-Dateien, extrahiert den Text und speichert ihn als separate .rtfs im selben Verzeichnis, in dem die Original-PDFs gefunden wurden.
Gut, ausgezeichnet, bis auf einen kleinen Schönheitsfehler: Neben den anderen .rtfs wird immer ein leeres (null Byte) mit dem Namen des aktuellen Verzeichnisses mitgespeichert.
Betrachtet man den Workflow unten, sieht es so aus, als würden beide Variablen („PDF“ und „Bane“) an die Aktion „Hent ut PDF-tekst“ übergeben. Ist meine Annahme vernünftig und wie kann ich sie auf jeden Fall beheben?
Das Skript im Klartext:
on run {input, parameters}
tell application "System Events"
set thePath to POSIX path of (container of (item 1 of input))
end tell
return thePath
end run
Abgesehen davon erstellt Automator automatisch eine PNG-Darstellung Ihres Workflows, wenn Sie ihn speichern, und Sie können leicht darauf zugreifen, indem Sie den Paketinhalt anzeigen.
Genius me erkannte dies erst, nachdem ich ein bisschen mit Bildschirmaufnahme und GIMP herumgefummelt hatte.
Hier ist das Problem, auf das ich bei der Übersetzung von „Hent ut PDF-tekst“ in Google Translate gestoßen bin, als ich aus dem Norwegischen ins Englische übersetzte. Es wurde als „Get the PDF text“ übersetzt, also als ich „Get“ in das Aktionssuchfeld eingab zeigte keine PDF-Aktionen mit den "Get"-Aktionen, die angezeigt wurden. Nach weiterer Prüfung fand ich Extract PDF Text und benutzte es.
Ich konnte das Problem replizieren, dass eine RTF-Datei mit Nullgröße zusammen mit der für die eigentliche PDF-Datei erstellt wurde, aber ich konnte nicht debuggen, warum, und ich habe viele verschiedene Dinge ausprobiert. Durch den Workflow wurde Bane als Ordner als Pfad zur ausgewählten PDF-Datei angezeigt, aber dann zusammen mit der richtigen RTF-Datei in die RTF-Größe Null konvertiert, und für mich sieht es aus wie ein Fehler in Automator.
Trotzdem stelle ich eine Problemumgehung vor, die Sie verwenden können, wenn niemand sonst eine Antwort hat, die das Problem behebt, ohne auf diese Problemumgehung zurückzugreifen.
Fügen Sie am Ende der Liste der Aktionen eine Run Shell Script Action hinzu, indem Sie Shell: /bin/bash und Pass input: als Argument mit dem folgenden Code festlegen :
for f in "$@"; do
if [ ! -s "$f" ]; then
rm "$f"
fi
done
Was übersetzt bedeutet: Wenn diese Datei keine Größe größer als Null hat, dann löschen Sie sie.
BTW Wenn Sie den Code zuerst testen möchten , können Sie ihn vorübergehend rm "$f"
durch etwas wie ersetzen say deleting "$f"
, damit Sie hören können, welche Datei gelöscht wird. Wenn Sie zufrieden sind, wird die Datei mit der Größe Null gelöscht und dann wieder in rm "$f"
.
Hier ist ein Bild meines Automator-Dienstes.
Benutzer3439894
AkselA
Benutzer3439894
AkselA