Ein PDF an ein anderes anhängen

Diskutiere das Thema Ein PDF an ein anderes anhängen im Forum Scripting und Automatisierung.

  1. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    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
     
  2. fa66

    fa66 Mitglied

    Beiträge:
    12.066
    Zustimmungen:
    3.514
    Mitglied seit:
    16.04.2009
    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.
     
  3. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    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.
     
  4. varuna

    varuna Mitglied

    Beiträge:
    458
    Zustimmungen:
    69
    Mitglied seit:
    21.10.2009
    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)
    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).

    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ß
     
  5. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    Klasse, das werde ich heute Abend mal testen!

    Ganz herzlichen Dank für die ausführliche Antwort!:upten:
     
  6. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    @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?
     
  7. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    Ergänzung: Auch mit Control+öffnen das gleiche Ergebnis.
     
  8. varuna

    varuna Mitglied

    Beiträge:
    458
    Zustimmungen:
    69
    Mitglied seit:
    21.10.2009
    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ß
     
  9. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    Wow, das wird ja komplizierter als vermutet. Ich werde das mal versuchen.

    Bereits jetzt schon mal herzlichen Dank für die Hilfsbereitschaft, lieber @varuna !
     
  10. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    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$
     
  11. varuna

    varuna Mitglied

    Beiträge:
    458
    Zustimmungen:
    69
    Mitglied seit:
    21.10.2009
    Hallo,

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

    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ß
     
  12. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    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.
     
  13. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    Sieh an, ich habe es selbst hinbekommen:

    rm -rf "$2"

    löst das Problem! So langsam finde ich Spaß an der Sache....
     
  14. MacNewbieC

    MacNewbieC Thread Starter Mitglied

    Beiträge:
    14
    Zustimmungen:
    2
    Mitglied seit:
    06.09.2019
    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 !
     
  15. varuna

    varuna Mitglied

    Beiträge:
    458
    Zustimmungen:
    69
    Mitglied seit:
    21.10.2009
    Hallo,

    vielen Dank für die lieben Worte!

    Falls du mit deinem Vorhaben nicht weiter kommst, gebe ich dir gerne einen Tip oder auch eine mögliche Lösung.

    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ß
     
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...