Warum sind aus MS Word generierte PDFs so groß?

70

Ich habe ein einfaches MS Word-Dokument erstellt, das nur diesen Satz enthält:

Dies ist ein kleines Dokument.

Nichts anderes. Dann habe ich dieses Dokument als DOCX und als PDF gespeichert. Hier sind die Dateigrößen:

DOCX: 12 kB
PDF: 89 kB

Dieser Unterschied ist technisch gesehen riesig und stört mich sehr, wenn hauptsächlich Textdokumente mit Dutzenden von KB in DOCX anfangen, PDFs mit einer Größe von Hunderten von KB zu erstellen. Was ist so ineffizient am PDF-Format? Oder verwendet nur Word einen schrecklichen Ausgabealgorithmus?

Übrigens wurden die PDF-Ausgabeeinstellungen so festgelegt, dass die kleinstmögliche Datei erstellt wird:

PDF-Ausgabeoptionen

Borek Bernard
quelle
28
Ich vermute, dass das PDF die Schriftart einbettet, was notwendig ist, wenn ein Dokument wirklich portabel sein soll.
AFH
2
Ja, die Teilmenge der Schriftarten ist eingebettet. Das könnte es sein. Ich habe versucht, denselben Satz ein paar hundert Mal zu wiederholen, und die Größe der PDF-Datei ist nur um 4 KB gewachsen, was in etwa richtig ist. (DOCX blieb auf 12 kB, was keine Überraschung ist, da dies ein komprimiertes Format ist und wiederholter Text kaum neue Bytes benötigt.)
Borek Bernard
1
@AFH Arial wird nicht eingebettet. i.stack.imgur.com/aUZgt.png
MonkeyZeus
1
Microsoft Word ist vom Standpunkt der Kolmogorov-Komplexität aus gesehen um viel mehr als ein paar hundert kB größer als der durchschnittliche PDF-Viewer.
Hobbs
8
Ich denke, die eigentliche Frage ist, warum Ihr Textverarbeitungsformat so viel größer ist als das entsprechende LaTeX ... :-p
Toby Speight

Antworten:

104

Wenn Sie das PDF in Notepad ++ öffnen, finden Sie:

9 0 obj
<</Filter/FlateDecode/Length 79100/Length1 171804>>
stream
xœì}    XTGºvÕ9½/t7Ðl
..... many more bytes  ...   ëH|  
endstream
endobj
10 0 obj

und auf dieses Objekt wird hier am Ende der Anweisung / FontFile2 verwiesen:

6 0 obj
<</Type/FontDescriptor/FontName/ABCDEE+Calibri/Flags 32/ItalicAngle 0/Ascent 750/Descent -250/CapHeight 750/AvgWidth 521/MaxWidth 1743/FontWeight 400/XHeight 250/StemV 52/FontBBox[ -503 -250 1240 750] /FontFile2 9 0 R>>
endobj

Die vom Word-Dokument verwendeten Schriftarten werden in die PDF-Datei eingebettet, sodass die PDF-Datei in sich geschlossen ist.

Ich habe dieses Dia-Deck verwendet , um die PDF-Anweisungen zu entschlüsseln.

Wenn Sie verhindern möchten, dass die Schriftarten in die PDF-Datei eingebettet werden, stellen Sie sicher, dass in Ihrem Word-Dokument eine der 14 in PDF-Viewern verfügbaren Standardschriftarten verwendet wird (Quelle Wikipedia ).

  • Times New Roman> Times (v3) (regelmäßig, kursiv, fett und fett kursiv)
  • Kurier Neu> Kurier (regelmäßig, schräg, fett und fett schräg)
  • Arial> Helvetica (v3) (regelmäßig, schräg, fett und fett schräg)
  • Symbol> Symbol
  • Wingdings> Zapf Dingbats
rene
quelle
6
Related: superuser.com/questions/607840/…
Borek Bernard
2
Nebenbemerkung: Das verknüpfte Dia-Deck (eine PowerShell-Präsentation) ist lesenswert. Sehr detailiert. Verpassen Sie nicht die Kommentare, in denen er die Struktur eines PDFs erklärt
nixda
3

Das ist mir in Microsoft Word schon oft passiert, als ich versucht habe, ein einfaches Manuskript als PDF zu exportieren. Ein 5- bis 8-seitiges Word-Dokument mit einer Größe von ca. 50 KB wird zu einer PDF-Datei mit mehr als 10 MB, die viel zu groß ist, um eine E-Mail an jemanden zu senden.

Renes Antwort ist auf dem richtigen Weg - das Problem ist, dass Schriftarten in das Dokument eingebettet werden -, aber die Verwendung einer der Standardschriftarten wird das Problem nicht unbedingt lösen.

Alle meine Dokumente befanden sich in Times New Roman und benutzten nichts Schöneres als Fettdruck und Kursivschrift. Zumindest dachte ich. Es stellt sich heraus, dass ich in meiner Standardvorlage das automatische Kerning aktiviert habe (aus offensichtlichen Gründen ). Beim Exportieren in PDF hat Word tatsächlich jede dieser Ligaturen als separates Schriftartobjekt in das Dokument eingebettet und es so unglaublich aufgebläht.

Das Update ist einfach, Sie müssen nur daran denken, es jedes Mal zu tun:

  1. Markieren Sie den gesamten Text im Dokument.
  2. Format → Schriftart → Erweitert
  3. Deaktivieren Sie "Kerning for fonts"

Interessanterweise können Sie Ligaturen, kontextbezogene Alternativen und andere erweiterte Typografiefunktionen aktiviert lassen. Sie haben keinen erkennbaren Einfluss auf die Größe der resultierenden PDF-Datei.

Exportieren Sie das Dokument erneut als PDF, und es ist ungefähr 100 KB groß. Leider ist das Kerning unterdurchschnittlich, daher würde ich das Drucken nicht empfehlen, aber es funktioniert einwandfrei zum Versenden eines Dokuments per E-Mail.

Cody Gray
quelle
-3

Eine weniger technische Antwort könnte darin bestehen, dass PDF-Dateien Vektoren (dh mathematische Gleichungen) verwenden, um alles zu beschreiben, was Sie sehen. Alle Kurven und Linien werden durch mathematische Gleichungen definiert. Daher müssen Sie eine Menge Informationen bereithalten, insbesondere, wenn Ihre Dokumente Bilder enthalten.

Dies hat den Vorteil, dass Sie theoretisch unendlich nah zoomen können, ohne an Auflösung oder Details zu verlieren, da die Linien und Kurven keine Breite haben und daher mit Ihrem Zoom skaliert werden können.

Genau wie durch die kürzliche Änderung der Google-Schriftart die Größe des Logos von ~ 14 KB auf ~ 300 KB verringert wurde, tragen einfachere Schriftarten wahrscheinlich dazu bei, die Dateigröße zu verringern.

Ben Sandeen
quelle
4
Diese Analogie funktioniert nicht. Überhaupt. Googles Logoänderung war nicht nur die Schriftart, sondern auch die Änderung von Farbverläufen zu Flach, was den Größenunterschied ausmacht. Darüber hinaus ist das Exportieren eines Dokuments in eine große Bitmap viel größer als eine Schrift + Text. Die mathematischen Gleichungen sind, wie Sie irreführend sagen, nur ganzzahlige Koordinatenpaare, von denen es vielleicht ein paar Dutzend pro Glyphe gibt. Und da es sich um eine Schriftart handelt, muss sie nicht für jeden Buchstaben wiederholt werden.
Joey