ubuntuusers.de

PDF Dateigröße in Ubuntu verringern

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Blumenschein

Anmeldungsdatum:
13. April 2012

Beiträge: 100

Hallo zusammen,

gibt es eine Möglichkeit, Die Dateigröße von PDFs, die z.B. mit Schribus erstellt wurden, in Ubuntu zu verkleinern. Ziel ist es hier möglichst viele Informationen in eine kleine PDF zu bekommen.

Danke für Infos, Gruß – Blumenschein

hakel

Anmeldungsdatum:
13. August 2009

Beiträge: 23336

Normalerweise kann man das in der Anwendung -Scribus- einstellen, mit "Ubuntu" hat das nichts zu tun.

Es wird einfach die Qualität und Auflösung von Bimtmapdateien reduziert - keine Hexerei. Schrift und Vektoren sind natürlich nicht betroffen.

http://wiki.ubuntuusers.de/ImageMagick

Damit ist auch eine Stapelverarbeitung möglich.

rennradler

Anmeldungsdatum:
27. Februar 2010

Beiträge: 1836

Ich habe mir dazu folgendes Shell-Skript geschrieben (shrinkpdf):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# $1: Aufloesung
# $2: Eingabedatei
res=$1
in=$2
out=${in%\.*}_${res}x${res}.pdf

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

Man ruft es wie folgt auf, um z.B die Auflösung von Bilder auf 150 dpi zu reduzieren:

shrinkpdf 150 tollesdokument.pdf

Es wird eine Datei names tollesdokument_150x150.pdf angelegt. Wieviel die Reduktion bringt, hängt vom Dokument ab.

hakel

Anmeldungsdatum:
13. August 2009

Beiträge: 23336

Imgagemagick nutzt gs, quasi Frontend. gs direkt ist natürlich effizienter!

Kannst du da noch die Qualität einbauen? Dann wäre es perfekt.

Besser ist neu aus Originalprogramm, keine Ahnung wieso.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7777

Es kommt stark auf die PDF Datei an und wie es danach aussehen soll.

Farbtiefe verringern kann z.B. mehr bringen als Auflösung runterzudrehen, aber es kommt aufs Material an.

Speziell zu Scribus vielleicht das hier: http://wiki.scribus.net/canvas/Scribus_Output#PDF_size dort (inkl. weitere Links)

Maxentius

Anmeldungsdatum:
20. November 2013

Beiträge: 170

rennradler schrieb:

Es wird eine Datei names tollesdokument_150x150.pdf angelegt.

Bei der Ausführung des Skripts erhalte ich folgende Fehlermeldung:

Invalid value for option -dColorImageResolution=xxx.pdf, use -sNAME= to define string constants

Habe ich etwas übersehen?

Gruß, M.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7777

klingt so als hättest du es mit falschen parametern aufgerufen

rennradler

Anmeldungsdatum:
27. Februar 2010

Beiträge: 1836

Maxentius schrieb:

rennradler schrieb:

Es wird eine Datei names tollesdokument_150x150.pdf angelegt.

Bei der Ausführung des Skripts erhalte ich folgende Fehlermeldung:

Invalid value for option -dColorImageResolution=xxx.pdf, use -sNAME= to define string constants

Habe ich etwas übersehen?

Gruß, M.

Reihenfolge der Parameter ist: Auflösung und danach Dateiname. Du hast vermutlich keine Auflösumg angegeben. Das Skript macht keine Fehlerbehandlung, da es nur ein schneller Hack für mich ist.

Wie ich bereits geschrieben habe - für Auflösung 150 dpi:

shrinkpdf 150 tollesdokument.pdf

Wenn Du 75 dpi willst:

1
shrinkpdf 75 tollesdokument.pdf

Ich schreibe in dem Skript die Auflösung in den Dateinamen, da ich immer mehrere Auflösungen probiere und den akzeptablen Kompromis zwischen Qualität und Speicherbedarf zu ermitteln.

umbhaki Team-Icon

Supporter
Avatar von umbhaki

Anmeldungsdatum:
30. Mai 2010

Beiträge: 2587

Wohnort: Düren/Rhld

Das Thema scheint ja einige Leute zu beschäftigen. Aber warum das Rad neu erfinden? Es gibt bereits eine Lösung von Jean-Philippe Fleury, die ich soeben erfolgreich auf eine ganze Reihe von PDFs losgelassen habe. Die kann man hier herunterladen.

Derzeit steckt in diesem Skript nur die französische und englische Sprache drin und auf meinem deutsch konfigurierten System hat sich das Ding in französisch gemeldet *seufz*. Die deutsche Übersetzung habe ich dann gleich mal darin ergänzt und die modifizierte Datei an ihn geschickt. Das ist aber gerade erst passiert.

Falls hier jemand die auch deutschsprachige Version haben möchte, ich habe sie schon. ☺ Aber ich bin mir unsicher, ob ich die ohne Fleurys Kenntnis hier einfach hochladen oder sonstwie weitergeben darf.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7777

Lutz Krumm schrieb:

Aber warum das Rad neu erfinden?

PDF ist im Prinzip nur ein Containerformat, da kann alles mögliche drin sein und es gibt ganz verschiedene Lösungsansätze.

Es gibt bereits eine Lösung von Jean-Philippe Fleury

Das mag ja ganz nett sein für Leute die eine 1-Klick-Lösung suchen, aber das Script ist doch viel heiße Luft und nichts dahinter. Das macht auch nichts anderes als gs aufzurufen.

Aber ich bin mir unsicher, ob ich die ohne Fleurys Kenntnis hier einfach hochladen oder sonstwie weitergeben darf.

Es ist GPLv3. Solange du das Copyright intakt und die Lizenz beibehältst, ...

rennradler

Anmeldungsdatum:
27. Februar 2010

Beiträge: 1836

Ich habe auch zuerst im Netz gesucht und nicht richtig simples gefunden. Mein Skript ist bewußt so minimalistisch wie möglich gehalten. Es ist nichts besonders. Aber man kann es aber z.B. in find per -exec ausführen und dann in einem Rutsch eine Vielzahl von Dateien schrumpfen.

Maxentius

Anmeldungsdatum:
20. November 2013

Beiträge: 170

rennradler schrieb:

Aber man kann es aber z.B. in find per -exec ausführen und dann in einem Rutsch eine Vielzahl von Dateien schrumpfen.

Kannst Du uns dazu Näheres sagen? Am besten ein nachvollziehbares Beispiel.

Gruß, M.

Maxentius

Anmeldungsdatum:
20. November 2013

Beiträge: 170

frostschutz schrieb:

Das mag ja ganz nett sein für Leute die eine 1-Klick-Lösung suchen, ...

Die Lösung funktioniert gut und ist für den gelegentlichen Einsatz auch empfehlenswert, zumal sie Tippfehler bei der Eingabe verhindert.

Besser wäre nur noch eine Lösung, die man aus dem Filemanager (in meinem Fall nemo) aufrufen kann, also Datei auswählen → per Kontextmenü die Konvertierung - am besten in verschiedenen Kompressionsstufen - starten.

Sowas gab es früher mal, wenn ich mich recht erinnere, als Nautilus-Script. Es wäre schön, wenn einer auch dieses Rad neu erfinden könnte.

Gruß, M.

rennradler

Anmeldungsdatum:
27. Februar 2010

Beiträge: 1836

Maxentius schrieb:

rennradler schrieb:

Aber man kann es aber z.B. in find per -exec ausführen und dann in einem Rutsch eine Vielzahl von Dateien schrumpfen.

Kannst Du uns dazu Näheres sagen? Am besten ein nachvollziehbares Beispiel.

Das ist eine lange Geschichte - siehe man page von find. Um zum Beispiel alle pdf-Dateien des aktuellen Verzeichnisses und der enthaltenen Unterverzeichnisse auf 150 DPI zu reduzieren (shrinkpdf muß dazu in $PATH sein), genügt:

1
find . -name \*\.pdf -type f -exec shrinkpdf 150 {} \;

Möchte man bei jeder Datei gefragt werden:

1
find . -name \*\.pdf -type f -ok shrinkpdf 150 {} \;

Natürlich kann man per Pattern Matching sekektiv Dateien auswählen, Rekursionstiefe festlegen,.... So einfach geht das. So aufgeblasene GUI-Lösungen sind nur unflexibel.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7777

Oder per for-Schleife:

for f in *.pdf; do shrinkpdf 150 "$f"; done

Unterverzeichnisse gehen dann mit */*.pdf */*/*.pdf

Man könnte das shrinkpdf jetzt noch etwas aufbohren, so daß auch shrinkpdf *.pdf direkt gehen würde und die Auflösung optional wird mit shrinkpdf -res 150 *.pdf ... dann könnte man sich auch die for-Schleife sparen und das Script wahrscheinlich auch als Filter für nautilus und andere einsetzen.

So aufgeblasene GUI-Lösungen sind nur unflexibel.

Ich habe nichts gegen GUI-Lösungen, manchmal schreibe ich sowas in dem Stil sogar selbst ( bei meinem Onkel stürzt Brasero aus unerfindlichen Gründen beim CD-Image ziehen ab, daher habe ich ihm ein 1-Klick-Script gebastelt http://paste.ubuntuusers.de/416907/ ).

Es gibt ja auch GUIs die wirklich was draufhaben, also z.B. gparted macht Sachen die man mit dem Kommandozeilen-parted nicht hinbekommt bzw. wo man dann eben selber wissen muß wie das geht. Das ist dann ein Rad das man nicht mal eben neu erfindet; ein Script das letztendlich nur einen einfachen Befehl aufruft ist nett, aber kein Rad im Sinne von einer bahnbrechenden Erfindung...

Leider kenne ich keine gute GUI für "PDF Dateigröße verringern", das wäre ein Programm mit diversen Optionen und vielleicht einem Seite-an-Seite vorher-nachher Vergleich. Sowas könnte dann eine geniale Lösung sein (eben "das Rad"). Zum Ränder zuschneiden gibts sowas in der Art mit "briss", das legt alle PDF-Seiten optisch übereinander in ein Bild, so daß man direkt für alle Seiten sehen kann, was weggeschnitten wird - wirklich kleiner wird die Datei dadurch aber nicht unbedingt, da geht es mehr darum, unnötige Ränder oder auch Footer/Header/Seitenzahlen rein optisch loszuwerden.

Antworten |