Format pliku PDF wyjaśniony: anatomia, warstwy i standardy
Co faktycznie znajduje się w pliku PDF? Opisany diagram i słowniczek obejmujące cztery sekcje fizyczne (nagłówek, treść, xref, zwiastun), sześć warstw zawartości (tekst, obrazy, czcionki, adnotacje, wektory, podpisy), metadane i standardy ISO (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) zbudowane na podstawie specyfikacji.
Plik PDF to nie pojedyncza rzecz. Jest to binarny kontener o określonej strukturze na dysku, zestaw warstw zawartości ułożonych w tym kontenerze i rodzina standardów ISO zbudowanych na podstawie podstawowej specyfikacji. Otwórz go w edytorze szesnastkowym, a jego struktura będzie widoczna w postaci zwykłego tekstu w pierwszych kilku wierszach. Otwórz go w przeglądarce, a warstwy zostaną wyrenderowane razem jako jedna strona.
Ten przewodnik stanowi opisany schemat: fizyczną strukturę pliku, warstwy zawartości, które zawiera treść, metadane otaczające wszystko oraz standardy (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT), które ograniczają go do określonych zastosowań.

Chcesz użyć tego diagramu na swoim blogu? Skopiuj ten kod osadzania:
Cztery Sekcje Fizyczne
Każdy plik PDF na dysku ma tę samą czteroczęściową strukturę, w tej kolejności:
1. Nagłówek (Header)
Pierwsza linia pliku. Zawsze zaczyna się od %PDF- i numeru wersji:
%PDF-1.7Wersje wahają się od 1.0 (wydana w 1993 r.) do 2.0 (wydana w 2017 r., aktualna). Po nagłówku następuje linia komentarza z bajtami binarnymi, które sygnalizują narzędziom FTP i innym narzędziom transportowym, że jest to plik binarny.
2. Treść (Body) - Obiekty Pośrednie
Największa część pliku. Każda strona, czcionka, obraz, adnotacja i pole formularza to ponumerowany obiekt pośredni:
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /Contents 4 0 R /Resources << ... >> >>
endobjKażdy obiekt ma identyfikator (numer przed 0 obj), numer generacji (0, używany do aktualizacji przyrostowych) i ładunek między << a >> dla słowników lub stream i endstream dla strumieni binarnych (dane obrazów, dane czcionek, skompresowana zawartość).
Obiekty odwołują się do siebie za pomocą składni <id> <gen> R (np. 3 0 R oznacza „obiekt 3, generacja 0”). W ten sposób strona odwołuje się do używanej czcionki lub katalog odwołuje się do drzewa stron.
3. Tabela Krzyżowych Odniesień (xref)
Tablica wyszukiwania przesunięć bajtów. Dla każdego obiektu w treści, xref zapisuje jego bezwzględną pozycję bajtową w pliku:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nTo właśnie sprawia, że pliki PDF są dostępne losowo. Przeglądarka może odczytać xref, przejść bezpośrednio do przesunięcia bajtowego obiektu 3 i wyrenderować tę stronę bez parsowania reszty pliku. Dlatego pliki PDF pojedynczego rozdziału otwierają się natychmiast, nawet jeśli plik źródłowy ma 500 stron.
4. Zwiastun (Trailer)
Ostatnia sekcja. Informuje parser, gdzie znaleźć xref i który obiekt jest korzeniem:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFWartość startxref to przesunięcie bajtowe tabeli xref. Znacznik %%EOF oznacza koniec pliku. Zwiastuny umożliwiają aktualizacje przyrostowe: dodanie nowego xref + zwiastuna na końcu pozwala dodawać obiekty bez przepisywania całego pliku.
Sześć Warstw Zawartości
Wewnątrz treści, zawartość jest przechowywana w sześciu typach warstw. Każda wyrenderowana strona PDF jest kompozytem tych warstw:
1. Tekst
Polecenia pozycjonowania glifów i odniesienia do czcionek, a nie ciągi tekstowe. Plik PDF przechowuje instrukcje typu „rysuj glif 42 z czcionki F3 w pozycji (120, 540)” zamiast „rysuj literę A tutaj”. Dlatego tekst jest zaznaczalny i przeszukiwalny: przeglądarka odwrotnie mapuje identyfikatory glifów na punkty kodowe Unicode za pomocą mapowania ToUnicode (lub CMap dla czcionek CJK).
Gdy brakuje mapowania ToUnicode dla tekstu, pojawia się klasyczny problem „PDF z zaznaczalnym tekstem, który kopiuje się jako śmieci”. Tekst jest widoczny, ale mapowanie glifów na Unicode jest uszkodzone lub nieobecne.
2. Obrazy
Przechowywane jako osadzone strumienie w jednym z kilku formatów:
- JPEG (filtr DCTDecode): fotografie, najczęstszy
- JPEG2000 (JPXDecode): wyższa kompresja, mniej powszechny
- Odpowiednik PNG (filtr FlateDecode + Predictor): zrzuty ekranu, linie graficzne
- CCITT Group 4 (filtr CCITTFaxDecode): zeskanowany tekst czarno-biały, używany w skanach archiwalnych
- JBIG2 (filtr JBIG2Decode): obrazy dwupoziomowe, powszechne w dokumentach OCR
Obrazy można przeskalować w dół, skompresować ponownie lub zastąpić bez wpływu na inną zawartość.
3. Czcionki
Osadzone jako pełne programy czcionek, podzbiory (zawierające tylko używane glify) lub odwoływane przez nazwę (muszą być zainstalowane w systemie przeglądarki). Podzbiory są domyślne - znacznie zmniejszają rozmiar pliku. Obsługiwane formaty czcionek: Type1, TrueType, OpenType i CIDFont (dla CJK).
Gdy czcionka jest odwoływana, ale nie osadzona i nie zainstalowana w systemie przeglądarki, przeglądarka zastępuje ją podobną czcionką - co zazwyczaj wygląda nieprawidłowo. PDF/A wymaga osadzenia wszystkich czcionek, aby temu zapobiec.
4. Adnotacje
Podświetlenia, komentarze, linki, stemple i pola formularzy to wszystko adnotacje. Są one nakładane na zawartość strony i mogą być dodawane, edytowane lub usuwane bez zmiany podstawowej strony.
Pola formularzy to szczególny przypadek: interaktywna adnotacja widżetu (część widoczna) plus słownik pola (część danych). Po wypełnieniu formularza i zapisaniu zmieniają się tylko słowniki pól - sama strona pozostaje nietknięta.
5. Grafika Wektorowa
Linie, kształty, krzywe i ścieżki rysowane za pomocą operatorów podobnych do PostScript (moveto, lineto, curveto). Skalują się nieskończenie bez utraty jakości. Większość eksportów CAD, wykresów i diagramów w plikach PDF to grafika wektorowa.
6. Podpisy Cyfrowe
Podpisy oparte na PKI, powiązane z zakresami bajtów pliku. Słownik podpisu określa „bajty od 0 do 12 547 i od 14 200 do końca pliku są podpisane” - niewielki zakres pośrodku jest zarezerwowany dla samej wartości podpisu. Każda zmiana w podpisanym zakresie bajtów unieważnia podpis, co pozwala PDF wykryć manipulację po podpisaniu.
Niektóre pliki PDF mają wiele podpisów, ułożonych jako aktualizacje przyrostowe - każdy podpisujący podpisuje plik w stanie, w jakim go otrzymał, zachowując łańcuch.
Metadane: Dwa Równoległe Systemy
PDF ma dwa systemy metadanych, które często się nie zgadzają:
Standardowy Słownik /Info
Przechowywany w zwiastunie. Pola: Title, Author, Subject, Keywords, Creator (aplikacja, w której użytkownik utworzył dokument), Producer (aplikacja, która wygenerowała PDF), CreationDate, ModDate. Ciągi tekstowe, łatwe do odczytania przez każde narzędzie PDF.
Strumień Metadanych XMP
Oddzielny strumień XML (Adobe XMP, oparty na RDF/XML), który obsługuje bogatsze schematy: Dublin Core, IPTC, niestandardowe schematy specyficzne dla domeny (profile kolorów, rejestracje praw autorskich, wersjonowanie manuskryptów).
Nowoczesne generatory PDF zapisują do obu. Stare pliki PDF mają tylko /Info. Niektóre pliki PDF mają nieaktualne /Info z poprzedniej wersji i dokładne XMP z niedawnej edycji - lub odwrotnie. Podczas audytu plików PDF pod kątem zgodności lub analizy kryminalistycznej sprawdź oba.
Standardy ISO Oparte na PDF
Podstawowa specyfikacja PDF to ISO 32000. Kilka pochodnych standardów ogranicza PDF do określonych zastosowań:
| Standard | Zastosowanie | Ograniczenia |
|---|---|---|
| PDF/A | Długoterminowa archiwizacja | Wszystkie czcionki osadzone, brak JavaScript, brak audio/wideo, przestrzenie kolorów niezależne od urządzenia. Poziomy zgodności: PDF/A-1, A-2, A-3 (pozwala na załączniki plików) |
| PDF/X | Produkcja druku | Kolory CMYK, osadzone czcionki i profile kolorów, brak przezroczystości (PDF/X-1a) lub kontrolowana przezroczystość (PDF/X-4) |
| PDF/UA | Dostępność | Drzewo struktury z tagami, metadane językowe, tekst alternatywny dla obrazów, logiczna kolejność czytania |
| PDF/E | Inżynieria | Modele 3D (formaty U3D, PRC), metadane specyficzne dla CAD |
| PDF/VT | Drukowanie transakcyjne zmienne | Zoptymalizowane pod kątem masowych spersonalizowanych przesyłek |
Plik PDF może jednocześnie spełniać wiele standardów - PDF/A-2u (archiwizacja z mapowaniem Unicode) w połączeniu z PDF/UA (dostępność) jest powszechne w archiwach rządowych i prawnych.
PDF-y zlinearyzowane (zoptymalizowane pod kątem sieci)
„Zlinearyzowany” lub „zoptymalizowany pod kątem sieci” PDF reorganizuje treść tak, aby obiekty pierwszej strony pojawiły się wcześnie w pliku. Przeglądarka internetowa może wyrenderować stronę 1 po pobraniu tylko pierwszych ~50 KB zamiast czekać na cały plik. Zwiastun jest zduplikowany na początku, plus tabela wskazówek, która mówi przeglądarce, gdzie zaczyna się każda strona.
Większość nowoczesnych generatorów PDF obsługuje linearyzację jako opcję „Zapisz dla sieci”. Format dodaje 2-5% do rozmiaru pliku w zamian za szybkie renderowanie pierwszej strony w wolnych połączeniach.
Szyfrowanie i Uprawnienia
Pliki PDF mogą być szyfrowane hasłem (lub certyfikatami) i udzielać granularnych uprawnień: drukowanie, kopiowanie tekstu, modyfikowanie, wypełnianie formularzy, wyodrębnianie dla dostępności. Szyfrowanie jest przechowywane w słowniku /Encrypt zwiastuna.
Siła szyfrowania ewoluowała: RC4 40-bit (wczesne pliki PDF, trywialnie łamane dzisiaj), RC4 128-bit (nadal słabe), AES-128, AES-256. Oryginalna implementacja RC4 programu Acrobat 5 została publicznie złamana w 2001 roku; nowoczesne szyfrowanie PDF (AES-256, PDF 2.0) jest solidne, gdy używane jest z silnymi hasłami.
Uwaga: „Uprawnienia” są doradcze. Przeglądarka, która je respektuje, będzie je egzekwować. Przeglądarka, która je ignoruje (lub narzędzie, które usuwa szyfrowanie), tego nie robi.
Jak PDFSub Odczytuje Pliki PDF
PDFSub przetwarza pliki PDF za pomocą powiązania PDFium w Rust (ten sam silnik, który zasila przeglądarkę PDF Chromium) oraz PaddleOCR dla zeskanowanych dokumentów. Szczegółowe informacje o architekturze i porównanie z narzędziami opartymi na chmurze można znaleźć w Przeglądarka vs Chmura - Bezpieczeństwo PDF.
W celu konwersji plików PDF do innych formatów przy jednoczesnym zachowaniu opisanej powyżej struktury:
- PDF do Excela - ekstrahuje tekst + tabele, zachowuje współrzędne
- OCR PDF - dodaje przeszukiwalną warstwę tekstową do zeskanowanych plików PDF
- PDF do Worda - przepływa tekst do edytowalnych akapitów
- Kompresuj PDF - przeskalowuje obrazy w dół, podzbiory czcionek
W przypadku przepływów pracy związanych z archiwizacją, zobacz Jak przekonwertować PDF do PDF/A.
Dalsza Lektura
- ISO 32000-2 (specyfikacja PDF 2.0) - autorytatywne źródło, płatne
- Archiwa Dokumentacji PDF Adobe - bezpłatna dokumentacja dla PDF 1.7
- PDF Association - grupa robocza branży, bezpłatne artykuły i pliki testowe zgodności
W przypadku tematów specyficznych dla PDF: Przewodnik po zgodności PDF dla prawników, Przewodnik po konwersji PDF/A.