Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Mit Automator Terminal-Befehl ausführen lassen
#1

Hallo,
ich verzweifel (trotz googln) gerade daran einen einfachen Termina-Befehl von Automator ausführen zu lassen:
Es geht darum, dass ich mittels eines Dienstes (oder evtl. auch Ordner-Aktion) die Ränder von PDF-Dateien wegschneiden lassen will. Dazu nutze ich pdfcrop, was im Terminal auch wunderbar funktioniert:
Code:
/usr/local/texlive/2012/texmf-dist/scripts/pdfcrop/pdfcrop.pl --margins '5 5 5 5' test.pdf out.pdf

Ich habe aber nicht ganz verstanden wie ich das jetzt am besten von Automator ausführen lassen kann. Ich hab es mit "Shell-Skrip ausführen" versucht, aber das liefert immer eine Fehlermeldung.

Kann mir da jemand weiter helfen?

Wenn das erst mal läuft, dann muss ich natürlich mit Variablen arbeiten, damit pdfcrop die angeklickte Datei bekommt...
Zitieren
#2

Ok ich kann irgendwie meinen Beitrag nicht bearbeiten:
Das Problem mit der Fehlermeldung hab ich gefunden:
Das "exit 0" fehlte...
Ich hab in "Shell-Skript ausführen" jetzt folgendes stehen:
Code:
#!/bin/bash

/usr/local/texlive/2012/texmf-dist/scripts/pdfcrop/pdfcrop.pl /Users/andreaskollbach/Desktop/Arbeitsmappe3.pdf out.pdf

exit 0
Es kommen jetzt zwar keine Fehlermeldungen, aber die Datei out.pdf" wird leider auch nicht erzeugt.
Zitieren
#3

Hi

Muss es unbedingt Automator sein? Ich hätte evtl. eine Applescript Lösung für eine Ordner Überwachung. Wäre Dir damit geholfen?

Gruss

lifeflow
Zitieren
#4

Hallo,
nein Automator war nur mein erster Ansatz.
Eine Ordnerüberwachung mit AppleScript wäre auch toll

Gruß
Andreas
Zitieren
#5

Ok, dann versuchen wir das mal...

Im Anhang findest Du das Applescript "CropPDF.scpt". Speichere das auf dem Desktop und öffne es im Applescript Editor. Du musst hier noch Änderungen vornehmen. Das Script sieht so aus:

Code:
on adding folder items to thisFolder after receiving addedItems
    
    set PDFcropBase to "/usr/local/texlive/2012/texmf-dist/scripts/pdfcrop/pdfcrop.pl --margins " as text
    set margins to "5 5 5 5" as text
    set DestinationFile to "/Users/lifeflow/" as text
    
    repeat with MyFile in addedItems
        tell application "Finder"
            set NameOfFile to (name of (info for MyFile))
            set NameOfFile to DestinationFile & "cropped" & NameOfFile as text
        end tell
        set margins to quoted form of margins as text
        set MyFile to POSIX path of MyFile as text
        set TheCommand to PDFcropBase & margins & " " & MyFile & " " & NameOfFile
        do shell script TheCommand
    end repeat
    
end adding folder items to

Den Pfad zu pdfcrop habe ich aus Deinem Posting übernommen.

In der Zeile "set margins to..." kannst Du die Schnittmarken bestimmen. Wichtig ist hier, dass Du zwischen den einzelnen Werten jeweils eine Leerstelle lässt.

In der Zeile "set DestinationFile to..." gibst Du den Pfad für den Export an. Das sollte nicht der überwachte Ordner sein. Sonst läuft das Script in einer Endlosschleife, weil jeder Export eine neue Datei erzeugt. Das Script erzeugt Dateinamen wie z.B. "croppedXYZ.pdf". Dem Originalen Namen wird also ein "cropped" vorangestellt.

Spreichere das Script und kopiere es in den Ordner "/Library/Scripts/Folder Action Scripts/". Mach dann einen Rechtsklick auf den zu überwachenden Ordner und wähle "Ordneraktionen konfigurieren...". Hier kannst Du das neue Script einbinden.

Ich hoffe, das funktioniert auf Anhieb...

Gruss

lifeflow

.zip CropPDF.scpt.zip Größe: 2,75 KB  Downloads: 125
Zitieren
#6

Hallo lifeflow und danke für das AppleScript.
Ich konnte deinen Anweisungen folgen aber leider passiert nichts wenn ich eine PDF in den zu überwachenden Ordner lege:
./Dokumente/crop, als Destination ./Dokumente/PDFcrop für Ordneraktionen...

Die Informationen (Eigentümer, Gruppe, Rechte zum Ausführen usw) habe ich wie bei den standard-Aktionen eingestellt.
Zitieren
#7

Ich habe das mit dem originalen pdfcrop getestet. Bei Deiner Installation wird ein Perl Script aufgerufen. Vielleicht liegt hier das Problem. Wenn ich Deinen Pfad analysiere, dann finde ich Hinweise auf Tex Live. Benutzt Du das, bzw. hast Du MacTex im Einsatz? Wenn ja, dann installiere ich das mal und teste erneut.

Du könntest mir vielleicht auch mal das pdfcrop.pl Script hochladen. Mich würde mal interessieren, was drin steht.

Der Dokumente Ordner ist jener in Deinem Home Ordner?
Zitieren
#8

Ja genau ich nutze MacTex (http://www.tug.org/mactex/)
Die Datei hab ich dir im Anhang gepackt (musste die Endung in txt ändern um es hochladen zu können).
Der Dokoment-Ordner ist der in meinem Home Ordner (/users/ich/documents)


Angehängte Dateien
.txt pdfcrop.txt Größe: 37,62 KB  Downloads: 148
Zitieren
#9

ich habe das mal installiert und konnte ein Problem feststellen. Das Perl Script gibt eine Fehlermeldung aus. Es kann die temporäre Datei nicht schreiben. Vermutlich handelt es sich hier um ein Problem mit den Berechtigungen. Oder der /tmp Ordner wird aus irgendeinem Grund nicht gefunden.

Ich muss das mal untersuchen. Kann aber etwas dauern...
Zitieren
#10

Alles klar, danke schon mal für die Hilfe
Zitieren
#11

Ich habe jetzt alle Möglichkeiten durchprobiert, die mir einfallen wollten. Leider ohne Erfolg. Sobald das Perl Script über einen Shell Script getartet wird, wirft es eine Fehlermeldung aus. Das Temp File kann nicht geschrieben werden.

Im Moment sehe ich hier keinen Ansatzpunkt. Aber ich nehme mal an, aus diesem Grund sind auch Deine Automator Versuche gescheitert.

Im ersten Anlauf hatte es ja geklappt. Leider handelte es sich dabei um ein anderes pdfcrop. Das gibt es nämlich auch noch als Standalone Anwendung. Aber diese versteht nur Papiergrössen, wie Letter, Legal und A4. Crop Margins werden nicht unterstützt.

Das von Dir verwendete pdfcrop ist ein Perl Script und scheint damit nichts zu tun zu haben. Das Cropping wird offensichtlich mit tex durchgeführt.

Ich gebe mich nicht gerne geschlagen. Aber hier gehen mit wirklich die Ideen aus...
Zitieren
#12

Ich habe vielleicht doch noch eine Lösung gefunden. War eine ganz schöne Bastelei Zwinkern

Im Anhang findest Du ein Archiv. Darin sind 2 Dateien enthalten:

1. Die ausführbare Datei crwork kopierst Du in den Home Ordner und startest sie einmal von Hand (wg. "Wurde aus dem Internet geladen...").

2. Das neue Applescript "CropPDF.scpt" verwendest Du für die Ordneraktion, wie weiter oben beschrieben. Zuvor kannst Du noch Anpassungen vornehmen:

In der Zeile

Code:
set DestinationFile to "~/" as text

kannst Du den Ausgabepfad bestimmen. Im Moment ist hier der Home Ordner eingestellt. Für die ersten Tests würde ich das so belassen. Wenn alles läuft, dann kannst Du ja einen anderen Ordner wählen.

In der Zeile

Code:
set Preafix to "cropped"

Kannst Du einstellen, welcher Präfix dem Dateinamen vorangestellt wird. Im Moment ist das "cropped". Aus der Datei "12345.pdf" würde so also "cropped12345.pdf". Genauer: wenn Du die Datei "123245.pdf" dem überwachten Ordner hinzufügst, dann hast Du als Ergebnis die Datei "cropped12345.pdf" im Home Ordner liegen (mit den aktuellen Einstellungen).

Auch hier würde ich vorab mit den Default Einstellungen arbeiten und erst später Hand anlegen, wenn es läuft.

Leider gibt es auch ein paar Schwachstellen. Ich konnte bisher keine Parameterübergabe für die Margins realisieren. D.h. das Cropping erfolgt immer mit den Werten "5 5 5 5", wie in Deinem Beispiel angegeben. Falls das sehr störend sein sollte, werde ich mich gerne nochmals damit beschäftigen. Kann aber etwas dauern, bis ich wieder Zeit habe Zwinkern

Der zweite Punkt ist der, dass für jedes Cropping ein Terminal Fenster aufgeht. Dieses schliesst sich nach der Bearbeitung automatisch. Also ist das nur ein kosmetisches Problem. Ich habe jedoch bisher keine Möglichkeit gefunden, dieses Verhalten zu unterbinden.

Ein paar Infos zur Funktionsweise:

Die ausführbare Datei crwork ist im Grunde ein Shell Script:

Code:
#!/bin/sh
/usr/local/texlive/2012/texmf-dist/scripts/pdfcrop/pdfcrop.pl --margins '5 5 5 5' ~/tmpinput.pdf ~/tmpoutput.pdf
exit

crwork ruft pdfcrop.pl auf und übergibt die Parameter. Die Parameterübergabe war bisher das eigentliche Problem. Wenn man das variabel gestaltet, dann wirft pdfcrop die tmp Fehlermeldung aus. Also bin ich dazu übergegangen, fixe Werte zu übergeben. crwork wandelt die Datei tmpinput.pdf in tmpoutput.pdf um. Beide Dateien werden im Home Ordner erwartet. Das Applescript sorgt in jedem Fall dafür, dass die Dateien auch vorhanden sind. Doch dazu gleich mehr.

Du kannst crwork im Texteditor öffnen und die Margins anpassen. Wie gesagt, bei Bedarf überlege ich mir noch eine Parameterübergabe. An den Pfaden und Dateinamen solltest Du jedoch nichts ändern. crwork würde sonst nicht mehr funktionieren, bzw. müsste mit den Pfaden in CropPDF.scpt synchronisiert werden. Falls Du Änderungen durchführen solltest, dann musst Du beim Speichern unbedingt darauf achten, dass crwork als Plain Text gespeichert wird.

CropPDF.scpt hat nun folgende Funktionen:

Es wird der Dateiname der hinzugefügten Datei ermittelt. Die Datei wird in den Home Ordner kopiert und in "tmpinput.pdf" umbenannt. crwork wird aufgerufen. crwork liest tmpinput.pdf, führt das Cropping durch und schreibt tmpoutput.pdf. tmpinput.pdf wird gelöscht. tmpoutput.pdf wird an den voreingestellten Ort (DestinationFile) verschoben und gemäss den Präfix Einstellungen umbenannt, also z.B. in "cropped12345.pdf". Das Terminal(-Fenster) wird geschlossen.

Die Originaldatei im überwachten Ordner wird nicht angefasst. Diese bleibt also erhalten.

Ich hoffe, das Ganze läuft auf Anhieb bei Dir und entspricht ungefähr Deinen Erwartungen...

Gruss

lifeflow

.zip Archiv.zip Größe: 3,7 KB  Downloads: 116
Zitieren
#13

Hi

Nur rein aus Interesse: konntest Du das schon mal testen? Funktioniert das bei Dir?

Gruss

lifeflow
Zitieren
#14

Hallo lifeflow,
danke für die Hilfe und sorry für die späte Antwort, ich kam bis jetzt nicht zum ausprobieren.

Deine Lösung als Ordner-Aktion funktioniert jetzt bei mir wunderbar, ein GROßES dankeschön!

Ich habe aber einfach mal getestet ob ich das ganze doch irgendwie als Dienst realisieren kann und das sieht eigentlich ganz gut aus:
[Bild: AutomatorScreenSnapz001.png]

Der Dienst funktioniert sogar (ich rufe auch einfach nur das Shell Skript auf) aber leider nur wenn ich wie hier eine Datei fest vorgebe. Wenn ich den ersten Punkt (der nur zum testen gedacht ist) entferne funktioniert der Dienst leider nicht mehr...

Ich glaub das ist irgend eine Automator-Sache aber grundsätzlich funkioniert das Beschneiden auf mit dem Automator Smiley

Ich hab den Dienst mal angehängt, wenn es dich interessiert kannst du ja mal rein gucken.
Zitieren
#15

Hi

Super, freut mich, dass es läuft! Ich schau mir das gerne mal an. Wie gesagt, mit dem Automator kenne ich mich nicht wirklich aus. Aber das sieht sehr interessant aus! Ich werde das die Tage mal
ausprobieren Smiley

Gruss

lifeflow
Zitieren
#16

Hi

Eine kurze Frage dazu. Mir erschliesst sich nicht ganz, wie der Workflow tatsächlich aussieht? Was soll der Dienst genau machen, bzw. auf welche Ereignisse soll reagiert werden? Möchtest Du das Cropping mit einem Rechtsklick auf die pdf Datei auswählen können? Oder verstehe ich hier etwas falsch?

Gruss

lifeflow
Zitieren
#17

Hi

Ich habe mal etwas ausprobiert. Vielleicht hilft Dir das weiter...

Ich habe in Automator mal einen Dienst erstellt. Der Dienst liest eine markierte PDF Datei ein und verarbeitet sie, genau wie bei der Ordneraktion.

Bei der Erstellung des Dienstes in Automator habe ich auf die Verwendung von Variablen verzichtet. Statt dessen habe ich das Applescript so umgeschrieben, dass es den kompletten Ablauf alleine bewerkstelligen könnte. Den Automator Umbau braucht es nur, damit das Script als Dienst genutzt werden kann.

Hier mal ein Screenshot aus dem Automator Fenster. Wie Du siehst, besteht der Workflow eigentlich nur aus dem Applescript. Die Einstellung "Dienst empfängt ausgewählte(n) PDF Dateien in Finder.app" sorgt dafür, dass der Dienst nur angezeigt wird, wenn eine PDF Datei markiert wurde.

   

Der Ablauf wäre also:

- PDF Datei markieren
- Dienst aus dem Finder Dienste Menü auswählen

   

Ich habe noch eine Änderung in das Script eingebaut. Es gibt jetzt keinen festen Ausgabepfad mehr. Die gecroppte Datei wird im gleichen Ordner erzeugt, in dem die markierte Originaldatei liegt. Das ging ja bei der Ordneraktion nicht, da es sonst zu einer Endlosschleife gekommen wäre.

   

Der Präfix kann natürlich immer noch im Script eingestellt werden. Falls Dir das lieber ist, kann man natürlich auch wieder einen fixen Pfad für die Ausgabe einbauen.

Hier ist das neue Script. Du kannst es einfach so in den Automator übernehmen.

Code:
on run
    set Preafix to "cropped"
    tell application "Finder"
        set MyFile to selection as alias
        set NameOfFile to (name of (info for MyFile))
        set myPath to container of MyFile as text
        set DestinationFile to POSIX path of myPath as text
        set NameOfFile to DestinationFile & Preafix & NameOfFile as text
    end tell
    set MyFile to POSIX path of MyFile as text
    set TheCommand to "cp " & MyFile & " " & "~/tmpinput.pdf"
    do shell script TheCommand
    do shell script "sleep 2"
    set TheCommand to "open ~/crwork"
    do shell script TheCommand
    do shell script "sleep 3"
    do shell script "rm -f " & " " & "~/tmpinput.pdf"
    do shell script "sleep 2"
    do shell script "mv " & "~/tmpoutput.pdf " & NameOfFile
    do shell script "sleep 2"
    tell application "Terminal" to quit
end run

An der bestehenden Installation für die Ordnerüberwachung musst Du nichts ändern. crwork wird immer noch im Home Ordner gebraucht. Du kannst jetzt also wahlweise mit der Ordneraktion oder dem Dienst arbeiten. Für den Dienst kannst Du noch in den Systemeinstellungen / Tastatur / Tastaturkurzbefehle / Dienste einen Hotkey zuweisen. Dann brauchst Du die PDF Datei nur markieren (1 x anklicken) und das eingestellte Tastaturkürzel zu drücken, um das Cropping durchzuführen.

   

Vielleicht finde ich noch eine Möglichkeit um den Dienst in das Kontextmenü der Datei aufzunehmen. Dann würde sich das Cropping per rechter Maustaste und Auswahl des Manüeintrages starten lassen. Mal sehen...

Gruss

lifeflow
Zitieren
#18

Gerade erst gemerkt. Der Eintrag ist ja auch schon ohne besondere Massnahmen vorhanden... Zwinkern

   
Zitieren
#19

Hi,
danke für deine Unterstützung.
Bin jetzt mal wieder dazu gekommen mich mit dem Thema zu befassen.

Du hast recht ich würde gerne mit der Maustaste auf eine PDF klicken und dass diese dann beschnitten bzw. durch die neue Version ersetzt wird.

Deine Lösung wäre also genau das, was ich suche....

Ich hab dein neues Script dann jetzt mal ausprobiert aber leider funktioniert es bei mir nicht wenn ich einfach das Script in den Automator kopiere.
Kannst du sonst die Automatordatei mal schicken, vielleicht liegt da das Problem?

Wie gesagt noch mal ein großes Dankeschön =)
Zitieren
#20

Kein Problem, hier ist die Automator Datei:

.zip CropPDF.workflow.zip Größe: 76,14 KB  Downloads: 129
Zitieren


Möglicherweise verwandte Themen…
Thema / Verfasser Antworten Ansichten Letzter Beitrag
Letzter Beitrag von snowman78
06.06.2013, 15:37



Benutzer, die gerade dieses Thema anschauen: 9 Gast/Gäste