PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PDF verkleinern -- aber einfach! Script?



cookie170
03-04-2010, 12:16
Hallo,

ich habe:

das Python-Programm pdfsizeopt.py;
einen Rechner mit openSuse 11.2.

Das Programm verkleinert meine mit pdflatex hergestellten PDFs dramatisch. OK, es war ein wenig Bastelarbeit, weil pdfsizeopt.py mit Ghostscript nur in einer gepachten Version läuft, aber jetzt geht es.

Zuletzt waren selbst kurze Briefe ein paar hundert Kilobyte schwer, weil ich das Schriftpaket »Linux Libertine / Biolinum« verwende. Offenbar wird dann die gesamte Schrift in das PDF eingebettet. Nun wiegen ein paar Seiten noch um die 50 kB.

Der Befehl, um pdfsizeopt.py auf ein PDF anzuwenden, lautet:


pdfsizeopt.py --use-pngout=true --use-jbig2=true --use-multivalent=true >Eingabe.PDF< >Ausgabe.PDF<

Das einzugeben ist aber ziemlich umständlich, wenn man jeden Tag mehrere PDFs herstellt.

Wie kann man das vereinfachen? Ich hatte folgende Ideen:

Konsole, Midnight Commander, Scriptname eingeben, Eingabe.pdf, Ausgabe.pdf, Enter
Dolphin, Rechtsklick auf Eingabe.pdf, im Kontextmenü wird ein Script aufgerufen, Name Ausgabe-PDF lautet einfach Eingabe-1.pdf


Ich habe leider vom Programmieren keine Ahnung. Hat jemand einen Vorschlag, wie man die Verkleinerei vereinfacht?

Danke!

Gruß,
Alexander

bischi
03-04-2010, 13:05
So was in der Art? (ungetestet)



#!/bin/bash

# dies ist ein Kommentar
# speichern als: script.sh
# hier selbstverständlich die GNU GPL einfügen ;-)

INPUT = $1
OUTPUT = $2

pdfsizeopt.py --use-pngout=true --use-jbig2=true --use-multivalent=true INPUT OUTPUT


Aufruf: script.sh input.pdf output.pdf

MfG Bischi

PS: Falls es nicht funktionieren sollte oder du Fragen zur Funktionalität hast: Her damit ;)

cookie170
03-04-2010, 13:27
Hallo Dominik,

vielen Dank für dieses ordentliche Script, mit dem ich noch experimentieren werde.

Ich habe die Sache ganz anders, hm, angefangen zu lösen:

Beim KDE 3 Konqueror konnte man das Kontextmenü anpassen, das ging ziemlich einfach. In meinem Fall habe ich eine Datei namens pdfopt.desktop geschrieben:


[Desktop Entry]
Encoding=UTF-8
ServiceTypes=all/allfiles
Actions=pdfsizeopt_als_Kontext

[Desktop Action pdfsizeopt_als_Kontext]
Name=Mit pdfsizeopt verkleinern
Icon=mail_send
Exec=pdfsizeopt.py --use-pngout=true --use-jbig2=true --use-multivalent=true %U



Davon gab's im Netz reichlich Vorbilder. Leider funktioniert das unter KDE 4.4.2 (bin von Morbus updateitis befallen) nicht mehr so einfach. Aber hier (http://kde-apps.org/content/show.php?action=content&content=80131) gibt es ein Script, dass die Konqueror-3-Kontextmenues in die für KDE4 umwandelt, wenn man die obige Datei korrekt unter /opt/kde3/share/apps/konqueror/servicemenus/ abspeichert.

Und es funktioniert soweit. Jetzt muss ich noch eine zweite Variante bauen für pgnout=false.

Aber es ist hoffentlich die Mühe wert. Ich muss mal Doku suchen, wie KDE4-Servicemenues zu bauen sind.

Gruß und nochmal Danke,
Alexander

cookie170
03-04-2010, 13:49
Zur Doku:

Bei KDE 4 liegen die Dateien für Kontextmenues unter:

~/.kde4/share/kde4/services/ServiceMenus/

Meine Datei pdfopt.desktop sieht jetzt so aus:


[Desktop Entry]
Type=Service
Encoding=UTF-8
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
Actions=pdfsizeopt_als_Kontext

[Desktop Action pdfsizeopt_als_Kontext]
Name=pdfsizeopt pgnout=true
Icon=mail_send
Exec=pdfsizeopt.py --use-pngout=true --use-jbig2=true --use-multivalent=true %U

Das Programm ist wirklich erstaunlich: es verkleinert meine PDFs auf ca. 15 % der Ursprungsgröße.

Eben bin ich aber auch über ein Hindernis namens
"NotImplementedError: PDF-1.5 cross reference streams not implemented" bei einer speziellen Datei gestolpert.

Na, mal testen.

bischi
03-04-2010, 13:55
Beim KDE 3 Konqueror konnte man das Kontextmenü anpassen, das ging ziemlich einfach. In meinem Fall habe ich eine Datei namens pdfopt.desktop geschrieben:

Viele Wege führen nach Rom ;) Ich benutz aktuell halt gerade Gnome (nachdem ich mit XFCE Probleme hatte). KDE ist mir irgendwie zu langsam und gross :)



Das Programm ist wirklich erstaunlich: es verkleinert meine PDFs auf ca. 15 % der Ursprungsgröße.


Was wird denn genau alles rausgeschnitten? Gerade die Schriften hätt ich gerne eingebettet. Wie sehen die PDF's auf nem anderen Rechner aus? Auf nem Windows-Rechner? Was passiert mit Bildern?

Lg Bischi

cookie170
03-04-2010, 17:25
Hallo,

es bleibt alles bei gleicher Qualität drin. Auf der website (http://code.google.com/p/pdfsizeopt/) findest Du zwei links zu Aufsätzen. Bist Du Dante-Mitglied? Im letzten Heft der EuroTeX war ein langer Aufsatz des Autors Peter Szabo (S. E 112 ff.), so bin ich darauf aufmerksam geworden.

Bei den Schriften beruht der Trick darauf, dass die Type1-Fonts in ein Format namens CFF konvertiert werden. Sie sind nach wie vor drin, aber _viel_ kleiner. Gelegentlich werde ich 'mal nachlesen, wie das funktioniert.

Gruß,
Alexander

bischi
04-04-2010, 16:35
es bleibt alles bei gleicher Qualität drin. Auf der website (http://code.google.com/p/pdfsizeopt/) findest Du zwei links zu Aufsätzen.

Habs mir mal durchgeschaut - sieht sehr interessant aus :) Auch wenn ich noch nicht wirklich im Detail kapiert hab, was die da machen (ausser Teile von Bildern abschneiden, die nicht zu sehen sind - was ich eigentlich sowieso erwartet hätte :D). Muss das wohl nochmals in Ruhe durchlesen (hab nur die Slides durchgeklickt...)


Bist Du Dante-Mitglied? Im letzten Heft der EuroTeX war ein langer Aufsatz des Autors Peter Szabo (S. E 112 ff.), so bin ich darauf aufmerksam geworden.

Nö - das müsste ich wohl irgendwann mal noch nachholen ;)


Bei den Schriften beruht der Trick darauf, dass die Type1-Fonts in ein Format namens CFF konvertiert werden. Sie sind nach wie vor drin, aber _viel_ kleiner.


Tönt logisch... Und die Kompatibilität bleibt? Kannst du mal ein so verbessertes PDF (kann ja irgend ne Doku sein - bspw l2picfaq ;)) hier auf mrunix hochladen? Dann können Leute mit verschiedensten Systemen und Viewern schauen, ob es auf dem jeweiligen System passt.

Lg Bischi

Schweinebacke
04-04-2010, 18:37
Bei den Schriften beruht der Trick darauf, dass die Type1-Fonts in ein Format namens CFF konvertiert werden. Sie sind nach wie vor drin, aber _viel_ kleiner. Gelegentlich werde ich 'mal nachlesen, wie das funktioniert. Zu CFF siehe beispielsweise http://en.wikipedia.org/wiki/Compact_Font_Format#Compact_Font_Format. Wie die Konvertierung funktioniert steht dort zwar nicht, aber dass dabei keine Daten verloren gehen.

Schweinebacke
04-04-2010, 19:14
Das Programm ist wirklich erstaunlich: es verkleinert meine PDFs auf ca. 15 % der Ursprungsgröße.
Bei meinen Tests schafft es nur ca. 50%. Wobei ich bisher keine Dokumente mit eingebetteten PNGs getestet habe, was sich vermutlich auch erheblich auf das Komprimierungspotential auswirken kann.

Nachteil ist bei meinen Tests, dass xpdf 3.02 und okular 0.9.5 bei mir zwei Fehler melden:
Error: Loop in Pages tree
Error: Page count in top-level pages object is incorrect und okular dann deutlich länger braucht, bis es die erste Seite anzeigt.

Trotzdem ist der Tipp gut. Gerade für PDFs per E-Mail kann sich das wirklich lohnen!

bischi
04-04-2010, 20:21
Naja - entweder es werden wirklich Teile entfernt, die nicht gebraucht werden oder es wird halt komprimiert... Und dann leidet unter Umständen die Performance...

LG Bischi

cookie170
04-04-2010, 22:15
Hallo,

l2picfaq wird von 596 kB auf 318 kB verkleinert, ich versuche mal, es hier anzufügen.

Hm, geht nicht. Entweder Bischi vergrößert einmalig mein Limit zum Hochladen oder ich muss das Ding auf irgendeinen Server hochladen -- hat da jemand einen Vorschlag (hab' ich noch nie gemacht),

Gruß,
Alexander

bischi
04-04-2010, 22:56
Hm, geht nicht. Entweder Bischi vergrößert einmalig mein Limit zum Hochladen oder ich muss das Ding auf irgendeinen Server hochladen -- hat da jemand einen Vorschlag (hab' ich noch nie gemacht),

würd ich ja gerne - kann ich aber leider nicht :D Kannst es mir sonst mailen - dann lad ichs bei mir auf die HP rauf.

Lg Bischi

bischi
04-04-2010, 23:46
Hier der Link:

www.ee.ethz.ch/~dominikb/l2picfaq/l2picfaq.psom.pdf

Ich seh zumindest auf den ersten Blick keinen Unterschied :D

Lg Bischi

lockstep
05-04-2010, 00:02
Sieht gut aus. :) Mir ist allerdings eine kleine Unschönheit aufgefallen, die auch in der Originalversion auftritt: Auf den Seiten 29 und 30 sind die Kopf- und die Fußzeile geringfügig verschoben (und auch die Abstände zu den Trennlinien verändert).

lockstep

bischi
05-04-2010, 08:57
Stimmt - das ist mir bis jetzt noch gar nicht aufgefallen :) Noch was, was ich in der nächsten Version korrigieren muss :D

Lg Bischi