Dlaczego pliki PDF są generowane z MS Word tak duże?

70

Stworzyłem prosty dokument MS Word zawierający tylko to zdanie:

To jest mały dokument.

Nic więcej. Następnie zapisałem ten dokument jako DOCX i plik PDF. Oto rozmiary plików:

DOCX: 12 kB
PDF: 89 kB

Ta różnica jest ogromna technicznie i naprawdę zaczyna mnie niepokoić, gdy dokumenty tekstowe o wielkości kilkudziesięciu kB w DOCX zaczynają generować pliki PDF o wielkości setek kB . Co jest takiego nieefektywnego w formacie PDF? A może po prostu program Word używa jakiegoś okropnego algorytmu wyjściowego?

BTW, ustawienia wyjściowe PDF zostały ustawione, aby utworzyć najmniejszy możliwy plik:

Opcje wyjściowe PDF

Borek Bernard
źródło
28
Domyślam się, że PDF osadza czcionkę, co jest konieczne, jeśli dokument ma być naprawdę przenośny.
AFH
2
Tak, podzbiór czcionek jest osadzony. To może być to. Próbowałem powtórzyć to samo zdanie kilkaset razy, a rozmiar pliku PDF zwiększył się tylko o 4 kB, co jest prawie w porządku. (DOCX pozostał na poziomie 12kB, co nie jest zaskoczeniem, ponieważ jest to format skompresowany, a powtarzający się tekst nie zajmie prawie żadnych nowych bajtów.)
Borek Bernard
1
@AFH Nie osadza Arial. i.stack.imgur.com/aUZgt.png
MonkeyZeus
1
Myśląc o tym z punktu widzenia złożoności Kołmogorowa, Microsoft Word jest większy niż przeciętna przeglądarka plików PDF, o wiele więcej niż kilkaset kB.
hobbs
8
Myślę, że prawdziwe pytanie brzmi: dlaczego Twój format przetwarzania słów jest o wiele większy niż odpowiednik LaTeX ... :-p
Toby Speight

Odpowiedzi:

104

Jeśli otworzysz plik PDF w notatniku ++, znajdziesz:

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

i do tego obiektu odwołuje się tutaj na końcu instrukcji / FontFile2:

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

Czcionki używane w dokumencie Word zostają osadzone w pliku PDF, dzięki czemu plik PDF jest samodzielny.

Użyłem tego zjeżdżalni do rozszyfrowania instrukcji PDF.

Jeśli chcesz zapobiec osadzaniu czcionek w pliku PDF, upewnij się, że dokument Word korzysta z jednego z 14 standardowych czcionek dostępnych w przeglądarkach PDF (źródłowa Wikipedia )

  • Times New Roman> Times (v3) (czcionką zwykłą, kursywą, pogrubioną i pogrubioną kursywą)
  • Kurier Nowość> Kurier (zwykły, skośny, pogrubiony i pogrubiony skośny)
  • Arial> Helvetica (v3) (zwykły, skośny, pogrubiony i pogrubiony ukośny)
  • Symbol> Symbol
  • Wingdings> Zapf Dingbats
przedłużyć
źródło
6
Powiązane: superuser.com/questions/607840/…
Borek Bernard
2
Sidenote: Połączony pokład slajdów (prezentacja PowerShell) warto go przeczytać. Bardzo szczegółowe. Nie przegap komentarzy, w których wyjaśnia strukturę pliku PDF
nixda,
3

Zdarzyło mi się to wiele razy w programie Microsoft Word, gdy próbowałem wyeksportować prosty manuskrypt do pliku PDF. 5–8 stronicowy dokument Worda, o wielkości około 50 KB, skończy jako plik PDF o wielkości ponad 10 MB, który jest zdecydowanie za duży, aby przesłać komuś e-maila.

Odpowiedź Rene jest na dobrej drodze - problem polega na tym, że czcionki są osadzane w dokumencie - ale użycie jednego ze standardowych krojów niekoniecznie rozwiąże problem.

Wszystkie moje dokumenty były napisane w Times New Roman, przy użyciu bardziej wymyślnych niż pogrubienie i kursywa. A przynajmniej tak myślałem. Okazuje się, że w moim domyślnym szablonie mam włączone automatyczne kerning (z oczywistych powodów ). Podczas eksportowania do formatu PDF program Word osadzał każdą z tych ligatur jako osobny obiekt czcionki w dokumencie, nadmuchując go nie do uwierzenia.

Poprawka jest prosta, musisz tylko pamiętać, aby to zrobić za każdym razem:

  1. Zaznacz cały tekst w dokumencie.
  2. Format → Czcionka → Zaawansowane
  3. Odznacz „Kerning czcionek”

Co ciekawe, możesz pozostawić włączone ligatury, alternatywy kontekstowe i inne zaawansowane funkcje typografii; nie mają one zauważalnego wpływu na rozmiar wynikowego pliku PDF.

Ponownie wyeksportuj dokument jako plik PDF, a jego rozmiar to około stu KB. Niestety, kerning jest mniej dokładny, więc nie zalecałbym drukowania w ten sposób, ale działa dobrze w przypadku wysyłania dokumentu pocztą e-mail.

Cody Gray
źródło
-3

Mniej techniczną odpowiedzią, która może pomóc, jest to, że pliki PDF wykorzystują wektory (tj. Równania matematyczne) do opisywania wszystkiego, co widzisz. Wszystkie krzywe i linie są zdefiniowane za pomocą równań matematycznych, a zatem koniecznie będzie wiele informacji do przechowywania, zwłaszcza gdy w dokumentach znajdują się obrazy.

Zaletą tego jest to, że możesz teoretycznie powiększać nieskończenie blisko bez utraty rozdzielczości lub szczegółów, ponieważ linie i krzywe nie mają szerokości, dzięki czemu można je skalować wraz z powiększeniem.

Podobnie jak ostatnia zmiana czcionki Google zmniejszyła rozmiar logo z ~ 14 KB do ~ 300B, prostsze czcionki prawdopodobnie pomogą zmniejszyć rozmiar pliku.

Ben Sandeen
źródło
4
Ta analogia nie działa. W ogóle. Zmiana logo Google była nie tylko czcionką, ale także z gradientów na płaskie, co czyni różnicę wielkości. Ponadto eksportowanie dokumentu do dużej mapy bitowej będzie znacznie większe niż czcionka + tekst. Równania matematyczne, jak to mylnie ujmujesz, są tylko liczbami całkowitymi współrzędnych, których może być kilkadziesiąt na glif. Ponieważ jest to czcionka, nie trzeba jej powtarzać dla każdej litery.
Joey,