PDF Compression & Object Streams
To minimize file size, PDFs heavily compress their internal data. Standard streams are compressed using ZIP-style /FlateDecode. Modern PDFs (1.5+) also support /ObjStm (Object Streams), which compress the PDF dictionaries and structural objects themselves.
These files are specifically generated to test your decompression algorithms. They test your parser's ability to inflate streams into memory without triggering OOM (Out-of-Memory) exceptions, and verify backward compatibility with uncompressed payloads.
Compressed images
A PDF utilizing heavy `/DCTDecode` (JPEG) compression on embedded media to test image processing limits.
Object streams
A modern PDF 1.5+ file utilizing `/ObjStm` to heavily compress the structural dictionaries. Will instantly crash legacy parsers.
Compressed streams
A standard PDF using `/FlateDecode` on all content streams to test baseline zlib inflation.
Uncompressed
A completely raw, uncompressed PDF (`/Filter null`). Significantly larger on disk, but tests raw un-encoded parsing logic.
Frequently Asked Questions
Use Cases
- Testing decompression bomb (Zip Bomb) heuristics to avoid false positives during streaming extraction.
- Validating modern PDF 1.5+ parsers against highly condensed `/ObjStm` object streams.
- Benchmarking decompression speeds across varying algorithms (`/FlateDecode` vs `/LZWDecode`).