Build a Minimal PDF by Hand: The Five Objects You Need
Hand-write a working PDF in a text editor: the Catalogue, Pages, Page, content stream, and font objects, plus the header, xref table, and trailer that bind
Software Development Blog
Deep dive into PDF structure, syntax, and document internals
Hand-write a working PDF in a text editor: the Catalogue, Pages, Page, content stream, and font objects, plus the header, xref table, and trailer that bind
HotPDF CopyPage returning the wrong page traces to object order in the file, not the /Kids sequence. This shows the cause and how to fix both parsing paths
ISO 32000 requires every PDF Catalogue to have a /Pages entry. Without it parsers crash or count zero pages; recovery means scanning every object for /Type
How PDF builds documents from eight object types, indirect objects and references, and a logical hierarchy from catalogue to page tree to page
How PDF stores its metadata and navigation layer: the XMP packet versus the Info dictionary, the outline tree behind bookmarks, and the annotation array
How PDF linearization (Fast Web View) shows page one before a file finishes loading: the linearization dictionary, hint streams, and why later edits break it
How the PDF graphics model works: the content stream, the bottom-left coordinate system, path and painting operators, the q/Q state stack, and image XObjects
Why PDF text renders as boxes or garbage on another machine: Type1, TrueType and Type0 CID fonts, encoding, embedding, and subsetting explained for developers
How a PDF is laid out on disk: the %PDF header, the object body, the xref table of byte offsets, and the trailer that a reader parses before anything else
PDF page order is set by the /Pages tree, not by object numbers. Learn how the Kids array, hierarchical subtrees, and property inheritance work in ISO 32000
Why PDF writers emit balanced page trees, what happens when tools flatten them, and how stale or lying /Count values break strict and lenient parsers
PDF is a collection of numbered objects located via a cross-reference table. That model governs font embedding, signature byte ranges, and incremental updates