PDF-Dateien unter Linux aus der Shell und aus Nautilus heraus komprimieren

Avatar von Christoph Langner

4 Min. Lesezeit

26 Aufrufe

Mit Ghostscript lassen sich PDF-Dateien verkleinern – das Nautilus-Skript Compress PDF macht daraus zwei Mausklicks.

Pressure Druck

Neulich war ich mal wieder in der Situation, dass ich (oder besser meine bessere Hälfte) PDF-Dokumente einreichen musste, die eine maximale Dateigröße nicht überschreiten durften. Keine Ahnung wer sich das ausgedacht hat, aber eine Bewerbung inkl. aller gescannter Zeugnisse unter 3 MByte halten zu müssen, ist schon arg knapp. Nun gut, mit Ghostscript kann man das relativ einfach bewerkstelligen, doch das dazu benötigte Kommando ist sehr sperrig. Doch mit einem zusätzlichen Skript für Nautilus kann man PDFs bequem aus dem Dateimanager heraus in ihrer Größe reduzieren.

Bevor ich zum Skript komme, gehe ich kurz auf das zugrunde liegende Ghostscript-Kommando ein. Prinzipiell könnt Ihr Ghostscript sagen, dass es ein PDF öffnen und es danach wieder mit neuen Einstellungen speichern soll. Wichtig dafür ist unter anderem die Option „PDFSETTINGS“, mit ihr wird bestimmt, in welcher vordefinierten Qualität die Ausgabe erfolgen soll…

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

…Ghostscript kennt für PDFSETTINGS die in der Auflistung gezeigten Einstellungen. Weitere Informationen zu gs und seinen Kommandos bekommt ihr beispielsweise über die Ghostscript PDF Reference & Tips von Milan Kupcevic.

  • /screen screen-view-only quality, 72 dpi images
  • /ebook low quality, 150 dpi images
  • /printer high quality, 300 dpi images
  • /prepress high quality, color preserving, 300 dpi imgs
  • /default almost identical to /screen

Nun ist das Kommando alles andere als handlich und einfach zu merken. Man könnte es zwar hinter einem Alias verbergen, doch warum aufwändig, wenn es doch auch einfacher geht? Der Dateimanager Nautilus der GNOME-Desktopumgebung kann selbst erstellte Skripte ausführen und da setzt Compress PDF an.

Das kleine Skript setzt auf dem oben genannten Befehl auf und verpackt das Ganze in eine einfache Zenity-GUI. So könnt Ihr eine PDF-Datei in Nautilus auswählen, das Skript starten und dann die Datei nach euren Wünschen komprimieren. Für die „Installation“ von Zenity, Ghostscript und Compress PDF müsst Ihr folgendes ausführen (bedenkt bitte, dass sich die URL zur Compress-PDF-1.4.tar.gz ändern kann. Prüft daher bitte, ob eventuell eine neue Version des Skriptes vorhanden ist).

$ sudo apt-get install zenity ghostscript libnotify-bin
### An dieser Stelle ist war der Artikel in die Jahre gekommen. Früher hat Gnome
### seine Einstellungen in ~/.gnome2/nautilus-scripts gespeichert, aktuell steckt
### die Konfiguration jedoch in ~/.local/share/nautilus/scripts.
$ cd ~/.local/share/nautilus/scripts/ 
$ wget http://launchpad.net/compress-pdf/1.x/1.4/+download/Compress-PDF-1.4.tar.gz
$ tar -xzf Compress-PDF*.tar.gz && rm Compress-PDF*.tar.gz

Danach findet Ihr Compress PDF im Kontext-Menü von Nautilus. Beachtet bitte, dass das Ergebnis nicht immer besser ist. Mit guten Parametern erstellte PDF-Dateien lassen sich oft gar nicht mehr sonderlich verkleinern. Zudem bringt die Verkleinerung auch einen Verlust an Qualität mit sich. Überprüft daher die resultierende Datei, ob die Qualität für eure Zwecke noch ausreichend ist.

Dennoch lassen sich oft gewaltige Einsparungen erzielen. Eine Reduzierung der Dateigröße um die Hälfte ist fast normal, manche der von mir verkleinerten PDFs wurden sogar um den Faktor vier kleiner. Ich habe das Skript auch auf die schnelle ins Deutsche übersetzt und an den Betreuer des Projekts Ricardo Ferreira geschickt. Bis er das eingebaut und neu veröffentlicht hat, könnt ihr die deutschsprachige Version über linuxundich.de herunterladen. Sobald die neue Version draußen ist, lösche ich diesen Abschnitte aus dem Beitrag raus.

[UPDATE 15.04.2016: Der Artikel erfreut sich immer noch einer größeren Beliebtheit, daher habe ich ihn anlässlich der Veröffentlichung von Ubuntu 16.04 mal wieder auf einen aktuellen Stand gebracht. Früher hat Nautilus im Verzeichnis ~/.gnome2/nautilus-scripts nach Skripten gesucht, inzwischen legt der Dateimanager Erweiterungen jedoch in ~/.local/share/nautilus/scripts ab. Beachtet diese Änderung auch bitte bei anderen Nautilus-Skripten.]

Ähnliche Beiträge

53 Kommentare zu „PDF-Dateien unter Linux aus der Shell und aus Nautilus heraus komprimieren“

  1. Avatar von Didi

    Nebenbei: Ich würde das Bewerbungsformular ignorieren und nach einer Email-Adresse suchen. Schon deshalb, weil viele Unternehmen ihr eigenen, ganz unterschiedlichen Süppchen kochen und diese dem Bewerber aufzwingen wollen.

    Natürlich steht eine Email-Adresse nicht immer zur Verfügung.

  2. Avatar von Blogleser

    SUPER Info… und endlich mal ein Skript, wo die Quali auch gut bleibt !

    Die PDF-Grösse beim „In Datei drucken“ fand ich schon immer „unter aller Sau“. Da wird mal eben aus nem 4,5 MB Jpeg eine 16 MB grosse PDF… würgh.

    Habe gerade auch mal 4 900×600/72dpi grosse Bilder, die zusammen ca. 1 MB gross sind per „In Datei drucken“ in eine PDF gelegt. PDF dann 4,3 MB gross.

    Das Skript hat diese PDF mit Einstellung „Bildschirm“ auf
    234 KB verkleinert. DAS ist gut 🙂 Und die Quali der Pics ist auch noch gut. Man sieht zwar schon kleine Artefakte um das Logo… aber trotzdem noch OK.

    In der Einstellung „Für Druck“, ist die Datei 486 KB gross.
    Und das in einer sehr guten Quali !

    Danke dir auf jeden Fall für den Tip !!

    Wenn Du in nem zukünftigen Blog noch herausfindest,
    wie man eine der Einstellungen (Bildschirm/eBook/Druck/Farbtreu) als Default beim „In Datei drucken“ hinterlegen könnte… DAS wäre dann der RIESENKNALLER 🙂

    Denn bisher war das nicht zu gebrauchen bei den erzeugten Grössen.

    Gruss… Blogleser

  3. Avatar von charly

    Danke für den Tipp – klappt SUPER!!

    Kannst Du vielleicht bekanntgeben, wenn das offizielle deutsche Script rauskommt?

    Danke!

    1. Avatar von Christoph

      Klar mache ich das, allerdings habe ich bislang noch kein Feedback bekommen.

  4. Avatar von Garve

    Hi! Nettes Skript. Aber weiß auch jemand, wie man ein ganzes Verzeichnis voller PDFs mit einmal komprimieren kann? Das würde selbst mit dem Skript recht lange dauern. Vielen Dank!

    PS: Mit find … -exec … und den Kommandozeileneingaben von oben wollte es nicht gehen.

    1. Avatar von Christoph

      Quick and Dirty klappt es wie folgt…


      #!/bin/bash

      function pdfcompress
      {
      FILENEW="compressed."$(basename $1)
      gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$FILENEW $1
      }

      export -f pdfcompress
      find -maxdepth 1 -iname '*.pdf' -exec bash -c "pdfcompress {}" \;

      1. Avatar von Garve

        Hi!

        Danke erst einmal. Wie genau muss ich jetzt damit umgehen?

        1. Avatar von Christoph

          Da gibts viele Wege. Einer wäre bspw.

          * Pack Inhalt des genannten Skriptes in die Datei ~/bin/batchpdfcompress
          * Mach das Skript ausführbar: chmod +x ~/bin/batchpdfcompress
          * Geh im Terminal via cd /pfad/zu/pdfs zu deinem PDFs die du komprimieren willst
          * Gib batchpdfcompress ein

          Falls du keinen Ordner ~/bin hast, dann würde ich ihn anlegen und danach das Terminalfenster neu starten. Erst dann landet der eigene ~/bin Ordner im $PATH und das dort enthaltene Skript kann von überall aus aufgerufen werden.

        2. Avatar von Garve

          Ok, vielen Dank!

      2. Avatar von fizzlifax

        Hallo,

        die Lösung ist super! – Ich hätte nur eine Bitte:
        Ich will natürlich die Original-Dateien aufheben für alle Fälle erst mal. Aber ich will mir nachher nicht mehr soviel Arbeit machen wenn alles gut gelaufen ist.

        kann man einfach die Originale in ori-„Altername“ umbenennen und dann den neuen komprimierten Dateien den Ursprünglichen Namen geben? Das wäre super! (Dann könnte ich anschließend die alten mit einem Befehl abräumen…!) Ich hoffe ich habe mich verständlich ausgedürkct…;-(

        Ich kenne mich mit dem höheren Scripting nicht so gut aus und will da nicht Stunden mit experimentieren..

        Vielen Dank schon mal im Voraus

        fi

        1. Avatar von

          Hallo!

          Das Original bleibt ja erhalten.

        2. Avatar von fizzlifax
          fizzlifax

          Richtig das Original bleibt da und ich muss alle 127 Compressed-Files umbenennen – aber das Original brauche ich wenn es funktionierrt hat nachher nicht mehr!

          Ich will die neuen behalten und mit einem rm ori-* den Müll löschen können.

          fi

  5. Avatar von Ich

    Sag mal, ich kann seit ca einer Woche deinen Feed nicht mehr in Liferea empfangen. Ich erhalte folgende Fehlermeldung :
    Es traten Fehler beim Parsen des Feeds auf!
    Details
    Konnte Feedtyp nicht bestimmen! Bitte überprüfen Sie, ob die Adresse wirklich auf eine Dokument in einem der unterstützten Formate zeigt!

    XML Parser Ausgabe:
    Die Adresse die Liferea abonnieren soll zeigt auf eine Webseite und die automatische Feed-Erkennung hat keine Feeds gefunden. Möglicherweise unterstützt die Webseite die automatische Feed-Erkennung nicht.Quelle zeigt auf ein HTML-Dokument.

    Hast du eine Ahnung woran das liegt? Dein Blog ist mein einziges Abonnement, wo das auftritt. Den Beitrag von letztem Donnerstag habe ich noch empfangen.

    1. Avatar von Christoph

      Hm, ich habe diese Flattr-Plugin in Verdacht. Es schmeisst aktuell einen Flattr-Button in den Feed, den ich nicht per Option deaktivieren kann, obwohl ich das eigentlich nicht möchte. Diese Änderung kam vor einer Woche über eine Aktualisierung des Plugins rein.

      //PS: Yep, es ist dieser Flattr-Button… http://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Flinuxundich.de%2Fde%2Ffeed%2F Grummel, muss mich mal durch den Code des Plugins quälen. Ganz abschalten will ich Flattr eigentlich nicht.

    2. Avatar von Christoph

      Hm, hab es gerade in Liferea aus Maverick selber probiert. Der Feed http://linuxundich.de/de/feed/ wird ohne Probleme eingelesen. Welche Version von Liferea ist denn bei dir installiert?

  6. Avatar von Thomas

    Gute Idee! Danke!

    Leider funktioniert es bei mir nicht. Ich habe kein Kontext-Menu „Script“.

    Hast Du irgendeine Idee?

    Im voraus schon mal vielen DANK!

    1. Avatar von Christoph

      Zeig mal die Ausgabe des Befehls…


      ls -al ~/.gnome2/nautilus-scripts/

      …her.

      1. Avatar von Thomas

        Danke, genau das wars. Das war nämlich leer. 🙁

        Ich habe das Script nach /usr/share/nautilus-scripts gepackt, damit meine Frau auch was davon hat. 😉

        Nachdem ich die nach ~/.gnome2/nautilus-scripts/ verlinkt habe, wurde alles gut. 🙂

        Ist allerdings IMHO irgendwie ein seltsames Verhalten unter Linux, dass die Skripte benutzerspezifisch angelegt werden müssen, obwohl die systemweit vorhanden ist.

        1. Avatar von Christoph

          Schau mal http://wiki.ubuntuusers.de/nautilus/skripte#ber-die-Paketverwaltung an, es gibt extra Tools um diese Links zu erstellen.

  7. Avatar von Max

    Hey Christoph, wärst du so nett, den Link zu dem Wallpaper aus dem Screenshot zu veröffentlichen? Danke 😉

    1. Avatar von Christoph

      Kann ich heute abend machen, falls ich es vergesse, dann erinnere mich einfach nochmal dran 🙂

        1. Avatar von Christoph

          Ah ja 🙂 Das sollte es sein… http://dl.dropbox.com/u/107860/137784-2560-1600-clean.jpg

        2. Avatar von Max

          Super, besten Dank!

  8. Avatar von Micha

    Hi Christoph,

    danke für den Hinweis mit dem Script. Allerdings erzielt das Script bei mir eigenartige Ergebnisse. Ich habe das ganze mit einer 1.3Mb großen PDF Datei probiert.

    Hier sind meine Ergebnisse:

    Screen: 71,5MB
    Low Quality: 71,6MB
    High Quality: 743,3KB
    High Quality (Color): 769,6 Kb

    Also ich hatte irgendwie andere Ergebnisse erwartet. Also die beiden High Quality Ergebnisse sind ja ok, aber die anderen beiden sind nicht ganz einleuchtend.

  9. Avatar von Ich

    Hallo,jetzt funktioniert das mit Liferea komischerweise. Eine Woche lang kam immer der Fehler, aber gerade eben ging es anstandslos.

  10. Avatar von Balthes

    Ich verschicke auch Bewerbungen und finde Bedienung und Ergebnisse sehr gut. Vielen Dank!
    Jetzt würde ich das gerne meinem Vater empfehlen, der solchen Dingen ohne Skript noch hilfloser gegenübersteht, als ich. Leider nutzt der Mac. Ist das für einen absoluten Laien möglich, das Script auf nem Mac ohne Linux zum Laufen zu bringen oder ist das zu speziell auf Nautilus und Linux zugeschnitten?

  11. Avatar von Tuxinaut

    Danke 🙂

    You save my day.

  12. Avatar von Compressor
    Compressor

    is ja fabelhaft – sehr elegant – vielen Dank!

  13. Avatar von Purzel

    Sehr gutes Tutorial, sowas habe ich heute stundenlang gesucht! DANKE 🙂

  14. Avatar von Kippenwolf
    Kippenwolf

    Super Script – vielen Dank!

  15. Avatar von HoWil

    Hi,
    Vielen Dank für dieses nette Skript. Ich habe aber noch eine Anregung. Wenn man Vektorgrafiken mit imagemagick convertiert gehen alle Vektorelemente verloren und werden ‚gerastert‘. Ein möglicher Ansatz ist Ghostscript zu verwenden.

    Im Speziellen funktioniert es wie hier:
    http://www.alfredklomp.com/programming/shrinkpdf/

    Auszug:

    #!/bin/sh

    gs -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
    $1

    Auf Antworten

  16. Avatar von Martin

    Sehr nützlich und funktioniert bestens. Danke!

  17. Avatar von Matilda

    Vieeeeelen Dank!!! Mal eben auf die Schnelle dringend was gesucht, fast gleich (wie schon so oft 😉 ) hier gelandet … wieder sehr übersichtlicher und prima zu lesender Artikel, Besonders toll dein Service, nicht nur einfach zu sagen „Das gibt es – holt’s euch“ sondern gleich die korrekten Runterlad- und Einbaubefehle mitzuliefern …

    flott noch ein Lesezeichen auf deine Seite gesetzt, so dass ich mit der Arbeit erst mal schnell voran komme und dann später nochmal in Ruhe deinen ganzen Beitrag in Ruhe zu lesen und wieder auf angenehme Art etwas dazu zu lernen:D

    Einzige Anmerkung: Ich habe zwar nur eine leichte Sehschwäche, aber #009BC2 ist im normalen Text für mich schon recht anstregend zu lesen, weil die Kontrast so schwach sind .

    Ansonsten aber wirklich prima – Danke!!

    (Meine fragliche Datei hat das Script übrigens von 9,2MB auf 438,7kB für den Screen-Modus runtergeschraubt und an der Qualität gibt es nix zu meckern *froi)

    1. Avatar von Christoph

      Hi Matilda, gerne geschehen. Ich schraube bei Gelegenheit mal ein bisschen am Kontrast der Schrift. Ist vielleicht wirklich ein bisschen zu grau. Grüße, Christoph.

  18. Avatar von charly

    Hallo!

    Hatte versucht das Skript nach Deiner Anleitung in 13.04 zu installieren – hat leider nicht funktioniert.
    Auf Launchpad habe ich dann folgende Anleitung gefunden:

    Das Skript entpacken und unter /home/$USER/.local/share/nautilus/scripts/ einfügen.
    Schon geht es wieder!!

    Vielleicht kanns Du mal Deinen Beitrag um das ergänzen.

    charly

    1. Avatar von Christoph

      Danke, für den Hinweis, ich schau mir das mal an.

      Grüße
      Christoph

  19. Avatar von Tobi

    Hallo und vielen Dank für die Anleitung.

    Funktioniert sehr gut und einfach wie ich finde. Ich hab dazu noch eine Frage: Hast du eine Idee wie oder wo ich das Script unter KDE-Dolphin einbauen kann?

    1. Avatar von Christoph

      Hi Tobi, ich denke das geht. Schau dir mal diesen Beitrag aus dem ubuntuusers.de Forum an. Grüße, Christoph.

  20. Avatar von Chris

    Hallo Christoph,

    ich möchte die Sache auf Linux Mint haben. Bin noch ein Beginner 😉 cd ~/.gnome2/nautilus-scripts findet er bei mir wohl nicht. Wo muss ich die Sache den ablegen, dass es bei mir im Menü erscheint. Danke für die Anfängerhilfe!

    1. Avatar von Tobi

      Ich kenne mich zwar mit MINT nicht aus, vermute aber, dass Nautilus da gar nicht standardmäßig installiert ist. Prüfe das mal und versuche dann ggf. Nautilus zu installieren. Heißt nicht der Standartdateibrowser bei MINT Caja oder so?
      Wie gesagt ist nur eine Vermutung und ein Tip von einem Anfänger für einen Änfanger….

      grüße

  21. Avatar von Christian
    Christian

    Vielen Dank. Funktioniert perfekt – genau das habe ich gesucht. VG Christian

  22. Avatar von

    Kann mich Christian nur anschließen. Tage gesucht und Hier gefunden. Vielen Dank

  23. Avatar von Ferdinand

    Wow, super! Danke vielmals, ich hab grade eine 60 MB-Datei zu einer mit 3,2 MB gemacht. Super. 🙂

  24. Avatar von Acer54

    Hallo und vielen Dank für das Teilen und die deutsche Übersetzung 🙂 Funktioniert gut.

  25. Avatar von das ich

    interessantes script. ich bekomme aber die error meldung „no file selected“
    getestet habe ich es unter mint mit nemo als browser
    gibt es da schon eine abhilfe?

    1. Avatar von Christoph Langner

      Hi das ich, ich habe es gerade mit Ubuntu 16.04 LTS getestet. Hast du das Skript nach ~/.local/share/nautilus/scripts/ kopiert? Der Beitrag ist an dieser Stelle nicht mehr ganz aktuell. Ansonsten funktioniert es wie gewünscht, von daher müsste es auch mit Mint klappen. Christoph.

  26. Avatar von das ich

    hi christoph,
    vielen dank fuer deine antwort.
    ich habe das script nach ~/.gnome2/nemo-scripts kopiert, in das
    verzeichnis gehoert es bei nemo 2.2.4 der bei mir installiert ist.
    es wird angezeigt und laesst sich auch anwaehlen, dann kommt aber die obige error meldung.
    nach ~/.local/share/nautilus/scripts/ gehoert es erst ab nemo 2.6.7

  27. Avatar von das ich

    ich habe mir das script angeschaut und zeile 166 geaendert.

    if [ -z "$NEMOSCRIPTSELECTEDFILEPATHS" ]; then

    $NAUTILUS muss fuer nemo durch $NEMO ersetzt werden.

    danke fuer die hilfe

  28. Avatar von das ich

    ich habe zeile 166 jetzt so abgeaendert das es sowohl mit nemo als auch mit nautilis gehen sollte

    if [ -z "$NAUTILUSSCRIPTSELECTEDFILEPATHS" | "$NEMOSCRIPTSELECTEDFILEPATHS" ]; then

    viel spass damit

  29. Avatar von Serdar

    Erstmal vielen Dank für diese Anleitung. Ich hätte da noch eine andere Bitte. Ich möchte eine eine Datei (.doc usw..) ohne sie zu öffnen, drucken oder in eine pdf umwandeln, also per rechten Mausklick. Gibt es dazu ein Script und wie kann ich es erstellen? Ich nutze Linux Mint 18 Cinnamon (Nemo). Vielen Danke.

    1. Avatar von Christoph Langner

      Es gibt CLI-Tools, die dir bspw. DOC-Dateien nach PDF konvertieren. Die Kommandos müsstest du dann als Nautilus-Skript ablegen.

      $ lowriter --convert-to pdf TestDoc.doc 
      convert /tmp/TestDoc.doc -> /tmp/TestDoc.pdf using filter : writerpdfExport
      $ unoconv -f pdf -o test.pdf TestDoc.doc

  30. Avatar von Thomas

    Perfekt. Geht immer noch 😉 Danke.
    Erfolgreich umgesetzt unter Fedora 28
    Mit Fedora ‚dnf install‘ anstelle von ‚apt-get install‘ => ‚libnotify-bin‘ nicht gefunden => es geht dennoch…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Über den Blog

Seit 2006 probiere ich hier aus, was Linux, freie Software und die passende Hardware so hergeben – von Distributions-Tests bis zum Raspberry-Pi-Projekt. Praxisnah statt bloßem Nachrichtenticker.

Zuletzt auf Mastodon

Wo wir beim Thema TuxSucht sind. @gnulinux hat einen tollen Beitrag über das "Projekt" veröffentlicht.

gnulinux.ch/tux-macht-suechtig…

#Linux #foss #opensource

Kategorien

Blog unterstützen

Gefällt dir, was du hier liest? Mit einer kleinen Spende hilfst du, Hosting und neue Testgeräte zu finanzieren – und sorgst nebenbei für den nötigen Kaffee.

Linux und Ich — PDF-Dateien unter Linux aus der Shell und aus Nautilus heraus komprimieren
https://linuxundich.de/gnu-linux/pdf-aus-nautilus-heraus-komprimieren/ — gedruckt am 23. September 2026