Dlaczego mój PDF prawie nie zmalał?
Przepuściłem PDF przez kompresor i z 4,1 MB zrobiło się 4,0 MB. Czy to narzędzie jest zepsute?
PDF to szafa na dokumenty
Model myślowy, który prowadzi do rozczarowania, to wyobrażanie sobie PDF-a jako obrazka dokumentu. Nim nie jest. PDF, zgodnie z normą ISO 32000, to kontener ponumerowanych obiektów: drzew stron, strumieni treści pełnych operatorów rysowania, osadzonych programów czcionek, obiektów XObject z obrazami, pól formularza, adnotacji, konspektów i tablicy odsyłaczy, która mówi, gdzie zaczyna się każdy obiekt.
Większość tych obiektów jest już skompresowana. Strumienie treści są zwykle zakodowane filtrem Flate, czyli tym samym algorytmem, którego używa archiwum ZIP. Osadzone zdjęcia są zwykle zapisane jako strumienie DCT, czyli dane JPEG przepuszczone bez zmian. Gdy więc uniwersalny kompresor patrzy na PDF, patrzy na pudło rzeczy, z których każda została już raz skompresowana.
Zanim cokolwiek skompresujesz, ustal, gdzie są bajty
Najbardziej użyteczna diagnoza to wiedzieć, jaki rodzaj dokumentu masz w ręku, bo przewiduje ona wynik niemal całkowicie.
| Typ dokumentu | Gdzie są bajty | Co może zrobić zapis strukturalny |
|---|---|---|
| Raport tekstowy z edytora tekstu | Osadzone programy czcionek i niewielkie strumienie treści | Bardzo niewiele; treść jest już gęsta |
| Zeskanowane strony | Jeden duży obraz na stronę | Prawie nic bez ruszania obrazów |
| Eksport prezentacji | Osadzone zdjęcia i gradienty | Trochę, jeśli obrazy powtarzają się na slajdach |
| Rysunek techniczny | Długie wektorowe strumienie treści | Trochę, przez ponowne zakodowanie strumieni i usunięcie nieużywanych obiektów |
| Formularz z załącznikami | Osadzone pliki, JavaScript, słowniki adnotacji | Dużo, jeśli dodatki da się usunąć |
Co naprawdę usuwa zapis strukturalny
Zapis strukturalny przepisuje dokument, nie zmieniając wyglądu żadnej strony. Może usunąć obiekty, do których nic już się nie odwołuje, a które przybywają przy każdym przyrostowym zapisie edytowanego dokumentu. Może skompresować tablicę odsyłaczy i upakować małe obiekty w strumieniach obiektów. Może usunąć metadane dokumentu, miniatury i historię edycji, którą zostawiają po sobie niektóre programy.
W dokumencie wielokrotnie edytowanym i zapisywanym może to dać dużo. W dokumencie wyeksportowanym raz, czysto, z edytora tekstu nie ma czego zbierać: plik jest już blisko najmniejszej możliwej postaci, a sto kilobajtów z czterech megabajtów to dokładnie ten wynik, którego należy się spodziewać.
Dlaczego dokument tekstowy stawia opór
W tekstowym PDF-ie dużą część pliku stanowią zwykle osadzone czcionki. Program czcionki to zwarty plik binarny z zarysami glifów i instrukcjami hintingu, a jest tam po to, żeby dokument wyświetlał się identycznie na maszynie, która danego kroju nie ma zainstalowanego. Nie da się go skompresować do zera bez dalszego ograniczenia zestawu znaków albo usunięcia go, a usunięcie zmienia wygląd strony.
Sam tekst jest maleńki. Sto stron prozy to kilkaset kilobajtów znaków przed kompresją. Jeśli twój tekstowy PDF jest duży, patrz na czcionki i na obrazy schowane pod tekstem — logo powtórzone w nagłówku, znak wodny w tle — a nie na słowa.
Dlaczego skan kurczy się gwałtownie
Zeskanowana strona to jedno duże zdjęcie kartki papieru, często zarejestrowane w 300 punktach na cal lub więcej. Strona A4 w 300 DPI to mniej więcej 2480 × 3508 pikseli — blisko dziewięć milionów — dla strony, której zawartość informacyjna to kilka kilobajtów tekstu. Dlatego skany reagują na kompresję rastrową tak dramatycznie: obniżenie rozdzielczości renderowania i ponowne zakodowanie obrazów stron uderza w tę część pliku, która naprawdę jest duża.
Dlatego też ten tryb jest destrukcyjny. Gdy strona staje się obrazem, znika przeszukiwalna warstwa tekstu, linki, pola formularza, adnotacje, struktura znaczników dla dostępności i każdy podpis cyfrowy. FileSlimmer traktuje rasteryzację jako osobny, wyraźnie opisany tryb z takim właśnie ostrzeżeniem, a nie jako ciche rozwiązanie awaryjne na wypadek, gdy zapis strukturalny zawiedzie.
Dlaczego nikt nie może obiecać ci konkretnej liczby
Rozmiar docelowy PDF-a to przeszukiwanie przestrzeni rozdzielczości renderowania i jakości obrazów, a to przeszukiwanie ma podłogę: poniżej pewnej rozdzielczości tekst na skanie przestaje być czytelny. To, czy konkretny dokument zmieści się w konkretnym budżecie powyżej tej podłogi, zależy od liczby stron, pokrycia farbą, ilości materiału fotograficznego i szumu skanera. Dwa dokumenty o tej samej liczbie stron mogą skończyć przy bardzo różnych rozmiarach.
Uczciwe zachowanie to zatrzymać się na podłodze i zaraportować, gdzie skończyło się szukanie — i dokładnie to robią gotowe ustawienia rozmiaru docelowego PDF w FileSlimmer. Narzędzie, które zawsze trafia w liczbę, którą wpisałeś, albo kłamie o tej liczbie, albo niszczy dokument, żeby ją osiągnąć.
Zanim obwinisz narzędzie
- Sprawdź, czy PDF nie jest skanem. Spróbuj zaznaczyć wiersz tekstu: jeśli kursor niczego nie zaznacza, każda strona jest obrazem.
- Zestaw liczbę stron z rozmiarem. Plik 40 MB na trzech stronach jest przeładowany obrazami; plik 40 MB na 900 stronach może być całkiem rozsądny.
- Sprawdź, czy dokument nie jest zaszyfrowany. PDF-a chronionego hasłem nie da się w ogóle przebudować, dopóki nie zostanie odblokowany.
- Sprawdź, czy nie jest podpisany. Przepisanie podpisanego dokumentu unieważnia podpis, a to zwykle gorszy skutek niż duży plik.
- Sprawdź, czego naprawdę potrzebujesz. Wyciągnięcie sześciu stron, które musisz wysłać, często bije kompresowanie wszystkich dziewięćdziesięciu.
Narzędzia do tego zadania
Źródła
- ISO 32000-2 — Document management, Portable Document Format
- Adobe — PDF 32000-1:2008, the freely published PDF 1.7 specification
- PDF Association — ISO 32000 and the PDF standards family