Warum manche PDFs einfach nicht kleiner werden
Warum wird mein PDF nicht kleiner?
Speicher deine Lieblings-Tools
Leg ein kostenloses iBuildPDF-Konto an, um deine Lieblings-Tools zu behalten und jederzeit schnell wiederzufinden.
Kostenloses Konto. Die PDF-Tools selbst brauchen nie eins.
Kurze Antwort
Meist, weil nichts mehr zu komprimieren übrig ist: Die Datei ist bereits effizient gebaut, oder ihre Größe kommt von eingebetteten Schriften, dichter Vektorgrafik oder Bildformaten, die sich im Browser nicht neu komprimieren lassen. Bildkompression hilft nur bei einer Datei, deren Bytes Fotos sind.
Die kurze Antwort
Jedes Kompressionswerkzeug hat dieselbe Grenze: Es kann nur Redundanz entfernen, die noch da ist. Wenn ein PDF sich weigert zu schrumpfen, liegt das fast nie daran, dass das Tool versagt hat. Es liegt daran, dass die Datei keine Luft mehr hat — oder dass ihr Volumen in einem Teil des Dokuments steckt, an den Bildkompression nicht herankommt.
Vier Ursachen sind häufig, und sie verlangen unterschiedliche Reaktionen. Die Datei ist schon nahe an ihrem Boden. Ihre Größe sind eingebettete Schriften. Ihre Größe ist Vektorgrafik. Oder ihre Bilder liegen in Formaten vor, die sich im Browser nicht dekodieren und neu kodieren lassen. Finde zuerst heraus, welcher Fall vorliegt — /pdf-page-count nennt Seitenzahl, Seitengrößen und ob eine Textebene vorhanden ist, was dafür meist reicht.
Die Datei ist bereits effizient gebaut
Das ist der häufigste Fall und der unbefriedigendste. Ein PDF, das einmal aus einer modernen Anwendung exportiert wurde, ist meist schon nahe an der kleinstmöglichen Größe, weil die allgemeine Kompression bereits gelaufen ist.
Wo die Bytes wirklich stecken
- Bilder. Bei fast jedem großen PDF ist das fast die ganze Datei.
- Eingebettete Schriften — ein paar hundert Kilobyte, egal ob das Dokument 5 oder 500 Seiten hat.
- Der Text selbst und die Struktur, die ihn zusammenhält. Meist ein Rundungsfehler.
Die Inhaltsströme der Seiten — die Anweisungen, wo der Text hinkommt, welche Schriften zu verwenden sind, wie die Linien zu zeichnen sind — werden mit dem Flate-Filter gespeichert, dem DEFLATE-Algorithmus aus RFC 1951, demselben, der in ZIP und PNG steckt. Der Exporter hat ihn beim Schreiben der Datei angewandt. DEFLATE über bereits DEFLATE-komprimierte Daten laufen zu lassen, holt nichts heraus; komprimierte Ausgabe sieht für einen Kompressor aus wie Rauschen — genau deshalb ist sie ja komprimiert.
Ein 40-seitiges Textdokument ohne Bilder hat also keine nennenswerte Luft. Strukturelle Optimierung — Objekte in Objektströme umpacken, durch frühere Bearbeitungen verwaiste Objekte entfernen, Metadaten löschen — bringt einstellige Prozentwerte und manchmal kaum das. Das ist keine Beschränkung eines bestimmten Tools; das ist schlicht die Datei.
Eine Ausnahme ist wissenswert. Ein PDF, das in mehreren Programmen viele Male geöffnet, bearbeitet und neu gespeichert wurde, kann eine Menge unreferenzierten Müll aus früheren Fassungen seiner selbst mitschleppen, und es sauber neu zu schreiben, bringt deutlich mehr. Wenn eine Datei für ihren Inhalt unplausibel groß wirkt und eine lange Bearbeitungsgeschichte hat, ist das die wahrscheinliche Erklärung.
Eingebettete Schriften
Ein PDF soll überall gleich aussehen. Dieses Versprechen wird eingelöst, indem die Schriften in die Datei gelegt werden, damit das Dokument nicht davon abhängt, was auf dem Rechner des Lesers zufällig installiert ist. Das ist einer der Gründe, warum es das Format gibt, und es kostet Bytes.
Wie viele, hängt von der Schrift ab. Ein Subset — nur die Glyphen, die das Dokument tatsächlich benutzt — einer lateinischen Textschrift liegt typischerweise bei einigen zehn Kilobyte und ist keine Sorge wert. Eine vollständige, nicht reduzierte Schrift ist größer. Eine CJK-Schrift, die Chinesisch, Japanisch oder Koreanisch abdeckt, kann für sich allein mehrere Megabyte haben, weil sie viele tausend Glyphen enthält. Bette zwei Schnitte davon ein, und du hast ein mehrere Megabyte großes PDF mit einer Seite Text darin.
Schlechtes Subsetting ist eine echte und behebbare Ineffizienz, aber die Lösung besteht darin, aus dem Quelldokument mit aktiviertem Subsetting neu zu exportieren — eine Aufgabe für die Anwendung, die das PDF erzeugt hat, nicht für einen Kompressor.
Was du nicht tun solltest: die Schriften herauslösen. Ein PDF, dessen Schriften entfernt wurden, wird auf jedem Rechner ohne die Originale mit Ersatzschriften dargestellt: Die Metriken verschieben sich, Zeilenumbrüche wandern, das Layout driftet, und Zeichen können ganz fehlen. Das Dokument hört stillschweigend auf, das Dokument zu sein. iBuildPDF entfernt keine eingebetteten Schriften, in keinem Modus, genau aus diesem Grund.
Dichte Vektorgrafik
Eine Karte, ein CAD-Export, ein Grundriss, ein Diagramm mit Zehntausenden gezeichneten Punkten: Das sieht aus wie Bilder und ist keines. Es sind Vektorzeichnungen, also enthält der Inhaltsstrom der Seite eine eigene Zeichenoperation für jede Linie, Kurve, Füllung und jeden Beschneidungspfad der Grafik. Eine detaillierte Karte kann Hunderttausende Operationen umfassen. Das ist die Datei.
Es gibt keinen Bildqualitätsregler zum Ziehen, weil es kein Bild gibt. Nichts zum Heruntersampeln, nichts neu zu kodieren, keine JPEG-Qualitätseinstellung, die greifen würde. Lass Bildkompression über so eine Datei laufen, und sie meldet korrekt, dass sie nichts zum Bearbeiten gefunden hat, und die Ausgabe ist so groß wie die Eingabe. Das ist kein Versagen, sondern das ehrliche Ergebnis. Der Inhaltsstrom ist, wie immer, bereits Flate-komprimiert, der allgemeine Hebel wurde also auch schon gezogen.
Die echten Optionen sind, die Grafik in der Anwendung zu vereinfachen, die sie erzeugt hat — weniger Pfade, weniger verborgene Details, überflüssige Ebenen entfernt —, oder die Vektoren aufzugeben und zu rastern, was weiter unten behandelt wird. Der Trost: Vektordateien sind auflösungsunabhängig — eine 500-KB-Karte druckt in jeder Größe perfekt, was ein 500-KB-Foto einer Karte nicht tut.
Bildformate, die sich nicht neu komprimieren lassen
Manchmal besteht die Datei tatsächlich aus Bildern, und sie lassen sich trotzdem nicht anfassen, weil der Browser sie nicht dekodieren kann. Neu komprimieren heißt, die Originalpixel zuerst zu dekodieren, und ein browserbasiertes Tool hat nur die Dekoder, die der Browser mitbringt.
- JPEG 2000 (JPXDecode). Ein wavelet-basierter Nachfolger von JPEG, der in manchen Archiv-, Medizin- und Profi-Scan-Abläufen verwendet wird. Browser unterstützen ihn nicht zuverlässig — es gibt keinen verlässlichen nativen JPX-Dekoder, also auch keinen sicheren Weg, an die Pixel zu kommen.
- JBIG2. Ein Format für bitonale (rein schwarzweiße) Scanbilder. Es erkennt wiederholte Formen — dieselbe Buchstabenform, die tausendmal auf einer Seite auftaucht — und speichert jede Form nur einmal. Bei gescanntem Text ist es extrem effizient, und ein JPEG könnte es nicht übertreffen.
- CCITT Gruppe 3 und Gruppe 4 (Fax). Die klassischen bitonalen Fax-Kodierungen, die Dokumentenscanner und Multifunktionsdrucker noch heute erzeugen. Jedes Pixel ist ein Bit, das Ergebnis ist also typischerweise bereits kleiner als jedes JPEG, das wir aus derselben Seite machen könnten; einen knackigen bitonalen Scan in JPEG umzuwandeln, würde ihn zugleich größer und schlechter machen, mit grauen Säumen um jeden Buchstaben.
Anderes wird ebenfalls bewusst übersprungen: Schablonenmasken und alles, was als /SMask oder /Mask dient, Bilder kleiner als etwa 100×100 Pixel, Rohdaten mit etwas anderem als 8 Bit pro Komponente, Farbräume, die sich nicht zuverlässig abbilden lassen, etwa Separation, DeviceN und Lab, sowie CMYK-JPEGs in einem Browser, der beim Test-Dekodieren zum Start durchfällt.
Wenn iBuildPDF ein Bild überspringt, zählt es das und meldet es, statt stillschweigend nichts zu tun. Wenn sich deine Datei kaum verändert hat und das Ergebnis meldet, dass die meisten Bilder übersprungen wurden, ist das die Erklärung.
Was wirklich hilft
Passe das Mittel zur Ursache.
- Bereits effizient gebaut. Nimm es hin, oder ändere, was du verschickst — teile das Dokument auf oder schick einen Link statt eines Anhangs. Keine Einstellung hilft.
- Oft neu gespeicherte Datei. Ein sauberes Neuschreiben wirft angesammelte verwaiste Objekte weg; ein erneuter Export aus der Ursprungsanwendung tut dasselbe.
- Schriften. Neu exportieren mit aktiviertem Subsetting. Entferne die Schriften nicht.
- Vektoren. Die Zeichnung an der Quelle vereinfachen — oder rastern.
- Übersprungene Bildformate. JBIG2 oder CCITT heißt, dass die Datei wahrscheinlich schon nahe an ihrem Boden ist; lass sie in Ruhe. Bei JPEG 2000 liefert ein erneuter Export aus der Scan-Software mit gewöhnlicher JPEG-Ausgabe meist eine Datei, die sich danach normal komprimieren lässt.
Bei einer vektorlastigen Datei ist Rastern der einzige verbliebene Hebel. Der Modus „Maximum“ auf /compress-pdf rendert jede Seite und ersetzt sie durch ein JPEG von sich selbst, sodass die Ausgabegröße nur von den Seitenmaßen und der Qualität abhängt, nicht von der Komplexität der Grafik. Das funktioniert. Es ist zugleich der einzige destruktive Modus, und die Seite sagt das, bevor du ihn ausführst: Das Ergebnis hat keinen markierbaren Text, keine Suche, kein Kopieren und Einfügen, keine funktionierenden Links oder Formularfelder, nichts für einen Screenreader, und Vektorgrafik, die beim Zoomen oder größeren Drucken unscharf wird. Da iBuildPDF kein OCR macht, kann hier nichts die Textebene nachträglich wiederherstellen. Behalte das Original.
Wie die einzelnen Modi im Detail arbeiten, steht in wie PDF-Kompression funktioniert.
Tools, um die es in diesem Artikel geht
Quellen
Primärdokumentation zu den Aussagen oben.