Ein PDF an ein anderes anhängen

M

MacNewbieC

Mitglied
Thread Starter
Dabei seit
06.09.2019
Beiträge
21
Reaktionspunkte
2
Hallo zusammen,

ich bin MAC und Mac OS - Neuling, also bitte ich um Nachsicht, falls die Frage zu blöd ist:

Ich möchte gerne folgenden Arbeitsablauf automatisieren:

Eine ("Nr. 2") PDF-Datei soll an das Ende einer anderen PDF-Datei ("Nr. 1") gehängt und das Ergebnis unter dem Dateinamen von Nr. 1 abgespeichert werden.

Zum bloßen Verbinden von PDF-Dateien habe ich eine Menge Automator-Skripte gefunden. Aber wie bekomme ich es hin, mit dem Ergebnis der Zusammenfügung die erste PDF-Datei zu überschreiben?

Ich wäre ausgesprochen dankbar, wenn mir hier jemand mal in für einen Anfänger verständlicher Form auf die Sprünge helfen könnte.

Besten Dank im Voraus und schönen Gruß

Claus
 
Auch ohne Automator?

Dann grundsätzlich:
a. PDF 1 in Vorschau öffnen.
b. Seitenleiste/Miniaturen anzeigen lassen.
c. PDF 2 hinter die letzte en miniature angezeigte Seite von PDF 1 in die Seitenleiste ziehen.
d. Alles unter dem alten Namen bspw. exportieren als (in alten Versionen von Vorschau Speichern unter…) .

EDIT:
Ach so. doch automatisiert… Vielleicht geht’s, das Exportieren als… als Aufruft ins Skript mit aufzunehmen.
 
Vielen Dank für die Antwort, aber das löst das Problem noch nicht ganz.

Die Automatisierung der Schritte a - c ist ja an verschiedenen Stellen beschrieben (z.B. hier: https://www.macwelt.de/ratgeber/PDF-zusammenfuegen-trennen-Mac-Vorschau-9941154.html).

Aber wie schaffe ich es, mit dem zusammengefügten Ergebnis die erste Datei zu überschreiben? Da müsste ich doch irgendwie mit Variablen arbeiten, die den Namen und den Speicherort der zu überschreibenden Datei enthalten.

Den Teil bekomme ich leider nicht hin.
 
Hallo,

es gibt im Automator keine Aktionen, die den Namen einer Datei und den übergeordneten Ordner auslesen. Sie lassen sich aber mit einem AppleScript oder Shell-Script auslesen und an eine oder mehrere Automator-Variablen übergeben. Solch ein Arbeitsablauf würde an sich schon einen gewissen "Schwierigkeitsgrad" aufweisen und Automator-Aktionen (also auch die Automator-Variablen) erwarten zudem solche Eingaben in einer bestimmten Form (z.B. durch AppleScript übergebene Namen werden als Liste, Pfade als alias erwartet....usw)
wenn mir hier jemand mal in für einen Anfänger verständlicher Form auf die Sprünge helfen könnte.
Es würde hier wirklich den Rahmen sprengen, das in leicht verständlicher Form zu vermitteln!

Um allerdings ohne Skripte auszukommen:
Es gibt eine 3rd-Party Automator-Aktion, welche sowohl Datei-Namen als auch übergeordnete Ordner auslesen kann! Auf dieser Seite findest du sie unter dem Name Get Names Of Finder Items:
http://www.menace-enterprises.com/Scripting/automator.html

Beachte: Automator-Aktionen anderer Anbieter müssen im aktuellen macOS (im gleichnamigen Automator Menü) einmalig aktiviert werden.

Du kannst ja mal probieren, wie weit du jetzt mit dieser Aktion kommst!

Beachte nur, dass das Ergebnis einer Aktion als Eingabe in die nächste Aktion mit übernommen wird (wie auch im angehängten Screenshot zu sehen). Hier und da kann es sein, dass diese Eingabe "ignoriert" (unterbunden) werden muss!


- - - - - - - - - -

Eine grundsätzliche Sache deines Vorhabens gibt dein verlinkter Beispiel-Dienst aber überhaupt nicht her:
Werden Finder Dateien in einem wie von dir beschriebenen Dienst (im aktuellen macOS Schnellaktion genannt) ausgewählt, so werden sie diesem Dienst dem Namen nach sortiert übergeben. Deine Nr.1 ist also immer durch die Sortierung vorgegeben.
Bei ausgewählten Datei01.pdf und Datei02.pdf wäre Datei01.pdf immer die Nr.1. Wenn aber Datei02 die Nr.1 sein soll, müsste man das ja irgendwie festlegen...was natürlich prinzipiell möglich ist. Da ist durchaus Kreativität gefragt... oder wiederum Skript-Kenntnisse *gg


- - - - - - - - -

Ich persönlich würde das ganze sowieso anders realisieren:

Es gibt ein 3rd-Party command line tool namens cpdf, welches für dein Vorhaben ideal wäre: es arbeitet wesentlich schneller als die Automator Aktion "PDF-Seiten kombinieren" und man könnte auch ohne Umwege die Nr.1 direkt überschreiben (was mit der Automator Aktion auch nicht geht).

Merge some files together:

cpdf one.pdf two.pdf three.pdf -o merged.pdf

Auf dieser Seite kann man es unter Download prebuilt tools now laden:
http://community.coherentpdf.com
In dem Ordner OSX-Intel findest du das Tool. Einfach an einen Ort deiner Wahl verschieben.

Das cpdf-Tool dann im angehängten Beispiel einfach in die Aktion Shell-script ausführen ziehen (um den Pfad zu cpdf zu erhalten) und den fehlenden Code ergänzen.
(Eingabe übergeben: als Argumente!)
Code:
/Pfad/zu/cpdf "$1" "$2" -o "$1"

Bsp1.png

Gruß
 
  • Gefällt mir
Reaktionen: MacNewbieC und KOJOTE
Klasse, das werde ich heute Abend mal testen!

Ganz herzlichen Dank für die ausführliche Antwort!:upten:
 
@varuna

hmm, irgendetwas mache ich falsch. Im Moment bekomme ich nicht einmal diese Drittanbieter-Aktion installiert.

Obwohl die entsprechende Option in Automator aktiviert ist

Bildschirmfoto 2019-09-10 um 18.44.00.png


bekomme ich beim Versuch der Installation folgenden Hinweis:

Bildschirmfoto 2019-09-10 um 18.42.59.png


Irgendeine Idee?
 
Ergänzung: Auch mit Control+öffnen das gleiche Ergebnis.
 
Argghh....
Die Tücken von Gatekeeper (dem Sicherheitssystem von macOS) !
Das ist dann wohl so eine Art ein Eigentor, bzw. eher ein Hund, der sich in den Schwanz beißt: Soweit ich das vor Augen habe, kommt doch zuerst der Hinweis, ob man diese Aktion installieren möchte, dann anscheinend der klassische Warnhinweis, den man eigentlich mit dem Kontextmenü -> Öffnen umgehen kann.... und anscheinend wegen des Schleife, in der man steckt, nicht greift!

Naja, da bleibt dann nur die Möglichkeit, den Gatekeeper Warnhinweis für diese Aktion zu deaktivieren:
Terminal.app öffnen
Folgenden Code eingeben, bzw. hier kopieren und einfügen:
Code:
sudo xattr -rd com.apple.quarantine
Sodann noch ein Leerzeichen und die Aktion per drag&drop in das Terminalfenster an das Ende des Codes ziehen.
Sollte letztendlich so aussehen:
Code:
sudo xattr -rd com.apple.quarantine /Pfad/zu/der/Aktion
enter/return drücken.

Das vorangestellte sudo verlangt, dass dieser Befehl mit Administrator-Rechten ausgeführt werden muss (könnte ja sonst jeder kommen und Gatekeeper böswillig z.B. dauerhaft für das ganze System abschalten).
Es wird jetzt ein Passwort verlangt.

Du musst also als Administrator angemeldet sein (wenn du nur einen Benutzer am Mac eingerichtet hast, ist dieser automatisch der Administrator) und jetzt dein Administrator Passwort eingeben! (Das, welches du zum Anmelden am Mac nimmst)
Beim Eintippen bleibt es unsichtbar! Nicht irritieren lassen!
Mit enter/return bestätigen.

(Wenn du zum ersten Mal ein sudo Befehl eingibst, erscheint einmalig eine kurze Warnung, dass man bei der Benutzung von sudo doch bitte vorsichtig sein soll!)


- - - - - -

Sorry, liegt am macOS, nicht an der Aktion (die ich in der gleichen Version übrigens auch schon sehr lange nutze und deshalb hier uneingeschränkt empfehlen kann!)

Gruß
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: dg2rbf
Wow, das wird ja komplizierter als vermutet. Ich werde das mal versuchen.

Bereits jetzt schon mal herzlichen Dank für die Hilfsbereitschaft, lieber @varuna !
 
  • Gefällt mir
Reaktionen: dg2rbf
Hat leider auch nichts geändert.:mad: In der Terminal app sah das folgendermaßen aus:

Last login: Thu Sep 12 08:19:56 on ttys000

Clauss-iMac:~ clausxxx$ sudo xattr -rd com.apple.quarantine /Volumes/Get\ Names\ of\ Finder\ Items

Password:

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/.DS_Store'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/.fseventsd/00000000000de206'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/.fseventsd/fseventsd-uuid'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/.fseventsd'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/.Trashes'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/GNU GPL 3.0.html'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Info.plist'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/English.lproj/InfoPlist.strings'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/English.lproj/Localizable.strings'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/English.lproj/main.nib'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/English.lproj'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/Scripts/main.scpt'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources/Scripts'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents/Resources'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action/Contents'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Get Names of Finder Items.action'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Read Me.html'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Screen shot.png'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items/Xcode Source Files.zip'

xattr: [Errno 30] Read-only file system: '/Volumes/Get Names of Finder Items'

Clauss-iMac:~ clausxxx$
 
Zuletzt bearbeitet:
Hallo,

das hätte ich mal erwähnen sollen :)
Die Aktion "Get Names of Finder Items liegt in einem Disk-Image.

DMG ist eine Abkürzung und steht für Disk-ImaGe.
DMG-Dateien werden häufig genutzt, um Software zu "verteilen".
Wenn man es etwas technischer betrachtet und genauer wissen will, handelt es sich um Abbilder eines Datenträgers.
Beim Öffnen eines Images erscheint das Images als eingebundenes Laufwerk im Finder und müssen daher auch nach der Verwendung und vor dem Löschen wieder ausgeworfen werden.
Quelle: https://www.maceinsteiger.de/was-ist/mac-dmg-dateien/


Sprich: du lädst z.B. ein Programm, welches sich in einem Disk-Image befindet und öffnest dieses.
Genauer gesagt "mountest" du es als Laufwerk. Das sich darin befindende Programm ziehst du dann auf deinen Mac (dabei wird es auf den Mac ->kopiert) ...bei Programmen am besten auch gleich in den Ordner Programme. Oft gibt es da im Image sogar schon eine Verknüpfung zu diesem Ordner.
Das Disk Image wirfst du dann wieder aus und kannst es auch gerne löschen. Manchmal sind da aber auch noch weitere Objekte enthalten, wie z.B. ein "ReadMe" mit wichtigen Hinweisen oder einer Art Gebrauchsanweisung.

Diese Disk-Images sind aus gutem Grund "read only" ... damit der Inhalt nicht verändert werden kann.


Also: die Aktion erst auf deinen Schreibtisch ziehen und dann wie beschrieben den Befehl anwenden.
Sollte dann so aussehen:
Code:
sudo xattr -rd com.apple.quarantine /Users/claushamacher/Desktop/Get\ Names\ of\ Finder\ Items.action

Danach die Aktion doppelklicken und installieren.

Gruß
 
  • Gefällt mir
Reaktionen: dg2rbf
Phantastisch - das hat funktioniert und der Rest auch!! Merci!! :music:

Kann man in dem Shellskript noch unterbringen, dass Datei 2 am Ende gelöscht werden soll?

Wenn ich einfach nur die Aktion "Finder-Objekte in den Papierkorb legen" hinten dran hänge, fehlt ihm ein Argument und ich möchte ja nicht die Datei ein zweites Mal auswählen müssen.
 
Sieh an, ich habe es selbst hinbekommen:

rm -rf "$2"

löst das Problem! So langsam finde ich Spaß an der Sache....
 
Ok, jetzt versuche ich die Aktion noch ein bisschen zu verfeinern.

Das Ergebnis soll eine Schnellaktion sein, bei der das erste PDF bereits ausgewählt ist und per Rechtsklick dann ein noch auszuwählendes zweites PDF angehängt werden kann. Das kombinierte PDF ersetzt die erste Datei und PDF Nr. 2 wird gelöscht (also im Prinzip das, was bis hierher als stand-alone-Skript funktionierte).

Mal sehen, ob ich das mit meinen rudimentären Kenntnissen hinbekomme.

Im Übrigen finde ich, dass dies hier ein sehr freundliches und hilfsbereites Forum ist. Bereits bei meiner ersten Frage habe ich eine Menge gelernt.

Besonderen Dank noch einmal an @varuna !
 
  • Gefällt mir
Reaktionen: dg2rbf
Hallo,

vielen Dank für die lieben Worte!

Mal sehen, ob ich das mit meinen rudimentären Kenntnissen hinbekomme.
Falls du mit deinem Vorhaben nicht weiter kommst, gebe ich dir gerne einen Tip oder auch eine mögliche Lösung.

Kann man in dem Shellskript noch unterbringen, dass Datei 2 am Ende gelöscht werden soll?
Wenn ich einfach nur die Aktion "Finder-Objekte in den Papierkorb legen" hinten dran hänge, fehlt ihm ein Argument
Wie du ja schon herausgefunden hast: rm löscht die Datei.
Das würde Datei 2 stattdessen in den Papierkorb legen:
Code:
mv "$2" ~/.Trash
Und das würde sie an eine nächste Aktion übergeben:
Code:
echo "$2"

Gruß
 
Zurück
Oben Unten