Wie richte ich einen OSX-Dienst ein, um die erste Seite einer PDF-Datei zu löschen?

Wie richte ich einen OSX-Dienst ein, um die erste Seite einer PDF-Datei zu löschen?

Ich erhalte häufig PDF-Dateien, bei denen die erste Seite entweder leer ist oder nur ein Deckblatt ist, das ich nicht brauche. Können Sie mir eine schnelle und effiziente Methode (Applescript, Service oder ???) vorschlagen, mit der ich nur diese erste Seite löschen und die Datei speichern kann?

Wenn dies über Vorschau oder Adobe Acrobat Professional automatisiert werden könnte, wäre das ideal.

Irgendwelche Ideen?

Antwort1

Sie können dies tun, indem SieAutomatorWorkflow. Er ist etwas komplexer als die meisten anderen, seien Sie also bei der Implementierung vorsichtig.

Dieser Beitrag enthältzweiVersionen: Eine ist kürzer und speichert die Ausgabe als Processed PDF File.pdfauf dem Desktop, die andere länger und speichert die Datei als(Edited)InputFileName.pdfim selben Verzeichnis. Die Schritte, die nur für die längere Version erforderlich sind, sind markiert(Optional).

OffenAutomatorund wählen Sie zum Erstellen eines neuenServicedas empfängtPDF-Dateienals Eingabe inJede Anwendung.

  1. (Optional)Füge hinzu einWert der Variablen festlegenAktion und benennen Sie die Variable FilePath.
  2. (Optional)Füge hinzu einAppleScript ausführenund verwenden Sie den folgenden Skriptcode, um den Ordnernamen abzurufen, in dem sich die Datei befindet:

    on run {input, parameters}
        tell application "Finder" to return (container of first item of input) as alias
    end run
    
  3. (Optional)Füge hinzu einWert der Variablen festlegenAktion und benennen Sie die Variable Folder.

  4. (Optional)Füge hinzu einWert der Variablen abrufenAktion und geben Sie die Variable zurück FilePath. Ignorieren Sie die Eingabe dieser Aktion in ihrerOptionen.
  5. (Optional)Füge hinzu einShell-Skript ausführenAktion und Eingabe weitergebenals Argumente. Verwenden Sie das folgende Skript, um den Basisnamen der Datei zu extrahieren:

    echo "$( basename "$1" )"
    
  6. (Optional)Füge hinzu einWert der Variablen festlegenAktion und benennen Sie die Variable FileName.

  7. (Optional)Füge hinzu einWert der Variablen abrufenAktion und benennen Sie die Variable FilePath. Ignorieren Sie die Eingabe dieser Aktion in ihremOptionen.

  8. Füge hinzu einPDF zu BildernAktion: Ausgabe auf dem Desktop oder in einem beliebigen Ordner speichern, der temporäre Dateien aufnehmen kann. Benennen Sie sie, wie Sie möchten.

  9. Füge hinzu einWert der Variablen festlegenAktion, damit wir später wissen, welche temporären Dateien gelöscht werden sollen. Nennen Sie die Variable TempFiles.
  10. Füge hinzu einAppleScript ausführenAktion und verwenden Sie den folgenden Skriptcode, um die Liste der temporären Dateien zu filtern (hier entfernen wir die erste Seite):

    on run {input, parameters}
        return rest of input
    end run
    
  11. Füge hinzu einPDF-Seiten zusammenführenAktion, die Teile wieder zusammenzusetzen, indemSeiten anfügen.

  12. Verwenden Sie dieFinder-Elemente verschiebenAktion, um die resultierende Datei (das neu kombinierte PDF) auf den Desktop oder in einen beliebigen Ordner zu verschieben. Wenn Sie sich entschieden haben, den übergeordneten Ordner der Eingabedatei zu berechnen, können Sie hier per Drag & Drop einen Verweis auf die FolderVariable einfügen.
  13. DerFinder-Elemente umbenennenAktion kann diesen Dateien einen besseren Dateinamen geben als zB zOpY3O.pdf, der automatisch zugewiesene Dateiname für die kombinierte PDF-Datei. Verwenden Sie zBName Einzelteilund geben Sie ihm den Basisnamen Processed PDF File. Wenn Sie sich für die längere Variante entschieden haben, ziehen Sie es FileNameaus der Variablenliste in das Textfeld und fügen Sie es (Edited)direkt davor ein. Jetzt sind wir im Grunde fertig, wir müssen nur noch aufräumen.
  14. Ergänzen Sie dieWert der Variablen abrufenAktion und erhalte den Wert von TempFiles. Ignoriere die Eingabe dieser Aktion in ihremOptionen.
  15. Füge hinzu einFinder-Elemente in den Papierkorb verschiebenAktion zum Entfernen der temporären Einzelseitendateien.

Hier ist ein Screenshot der fertigen, längeren Version des Workflows:

Bildbeschreibung hier eingeben

Antwort2

Mit Hilfe der oben genanntenBefehlszeilen-PDF-Toolskonnte ich einen Workflow zusammenstellen, der Folgendes tut:

  1. Nehmen Sie ein Eingabe-PDF (oder PDFs) und generieren Sie eine neue Datei abzüglich der ersten Seite
  2. Verschieben Sie das Original-PDF in den Papierkorb.
  3. Benennen Sie die neue Datei so um, dass sie mit der Originaldatei übereinstimmt

Zuerst habe ich die PDF-Tools wie beschrieben installiert. Das wichtigste Tool in diesem Fall ist pdfsplit.

In Automator habe ich einen neuen Dienst erstellt, um ausgewählte PDF-Dateien im Finder zu empfangen.

Ich habe die Aktion „Shell-Skript ausführen“ hinzugefügt, wobei die Shell „/bin/bash“ war und „Eingabe übergeben“ auf „als Argumente“ gesetzt war. Dann habe ich das folgende einfache Skript geschrieben:

for f in "$@"
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Ich habe eine Aktion „Finder-Elemente in den Papierkorb verschieben“ für die Originaldatei und eine Aktion „Text ersetzen“ hinzugefügt, um die Erweiterung .tmp aus der neuen Datei zu entfernen.

Um den Vorgang mit einer Ordnereingabe auszuführen, sähe das Skript etwa so aus:

cd "$@"
for f in *pdf
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Ich nehme an, ich hätte alles im Shell-Skript erledigen können, einschließlich Entfernen und Umbenennen. Aber der Befehl rm kann gefährlich sein, und ich ziehe es vor, die Originaldatei stattdessen in den Papierkorb zu verschieben.

Das Skript kann so geändert werden, dass es mehr kann, als nur x Seiten zu entfernen. Ich habe beispielsweise ein ähnliches Programm entwickelt, um PDFs stapelweise zuzuschneiden und zu kombinieren. Weitere Informationen finden Sie im Handbuch zu pdfsplit und den zugehörigen Tools.

Antwort3

Jemand in einem anderen Forum hatmancheBefehlszeilen-PDF-Tools, einschließlich eines Tools, das Seiten löscht. Das schien relativ einfach zu sein. Das einzige mögliche Problem könnte sein, wie es mit Ihrem Workflow funktioniert. Aus Ihrer Beschreibung geht hervor, dass Sie etwas haben, das funktioniert, während die PDF-Datei geöffnet ist, und diese Tools scheinen (besser) mit einer geschlossenen Datei zu funktionieren.

Antwort4

Als Ergänzung zu der Antwort von Joseph Yannielli möchte ich sagen, dass es für diejenigen, die sich für die Ausführung des Shell-Skripts entscheiden, möglicherweise einfacher ist, Befehle zum Löschen und Umbenennen der Datei in das Skript aufzunehmen, anstatt separate Aktionen über Automator hinzuzufügen:

for f in "$@"
do
    /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
    rm "$f"
    mv "$f".tmp "$f"
done

Was die Installation von PDF-Befehlszeilentools betrifft, so kann dies bequem mit demSelbstgebrautes:

brew install pdf-tools

verwandte Informationen