
Every byte of the PDF engine, written from scratch.
No PDFKit, no third-party SDKs. In development: viewer, text, annotations and writer have shipped. macOS today, iPadOS and iOS next.
Engine architecture
A layered, modular PDF engine built from the ground up against ISO 32000-1:2008. No PDFKit. No shortcuts.
The complete PDF object graph: booleans, numbers, strings, names, arrays, dictionaries, streams, and indirect references with full resolution.
Byte-level tokenizer, object parser, cross-reference table and stream handling, and a document structure reader. Handles incremental updates and hybrid xref files.
A content stream interpreter with a full graphics state machine, compiled to a display list with a spatial index, so a scroll only redraws what moved on screen.
Standard 14 fonts, embedded TrueType, CFF/Type1C, CIDFontType0, Type 3 glyph programs, composite CMap fonts, and vertical writing.
Device, calibrated, ICC, indexed, separation and DeviceN color spaces. Tiling patterns, axial and radial shadings, and Coons and tensor patch meshes.
Raw samples, JPEG, JPEG 2000, inline images, stencil masks, soft masks, and color-key masking, with the full filter pipeline.
Glyph-accurate extraction in page space and a character → word → line → paragraph layout model, with background OCR unioned in so scanned pages select and search too.
All 15 common annotation types parsed and rendered, default appearances generated when /AP is missing, creation and editing with generated appearance streams, and electronic signatures.
Incremental save and full rewrite with cross-reference generation; page insert, delete, reorder and rotate; merge and split; images to PDF; and searchable PDF with invisible OCR text.
What makes it different
Spec-compliant, modular, and built to last.
A ground-up implementation of the PDF 1.7 spec, so nothing a PDF can do is out of reach.
Tiled rendering with a viewport-aware raster scheduler. Pages stay sharp mid-scroll instead of resolving a beat after you stop.
The same engine runs the Mac app today and the iPad and iPhone apps next, with an interface built for each one rather than ported between them.
Every feature is verified against ISO 32000-1:2008, and every render is checked against reference images with a perceptual ΔE visual-regression gate.
A built-in MCP server exposes the open document to AI agents: read pages, text and annotations, and run the write operations you explicitly enable.
Summarise, explain or rewrite a selection with Apple’s on-device model, and OCR that makes scans selectable. Nothing leaves the device.
Development roadmap
Built in incremental phases across a 14-phase plan. Each phase produces a testable, usable artifact before the next one starts.
Shipped
Swift Package scaffolding and module graph, then the full parser pipeline: tokenizer, object parser, stream filters (Flate, LZW, ASCII85, RunLength), cross-reference tables and streams, hybrid and incremental files, document structure, and the fynpdf-inspect CLI.
Content stream interpreter and graphics state machine, path rendering and clipping, every color space (ICCBased, Indexed, Lab, Separation, DeviceN), PDF functions, tiling patterns, axial and radial shadings, mesh shadings (types 4 to 7), images and masks, and the complete font stack: Standard 14, TrueType, CFF/Type1C, Type 0/CID, Type 3, vertical writing.
A real macOS app: continuous scroll, zoom, thumbnail sidebar, reading layout modes, a Preview-style sidebar, keyboard navigation, and a full multiplexer workspace of windows, tabs and recursive split panes sharing one raster cache. Six app icon themes with an in-app picker.
Glyph-accurate text extraction, a word/line/paragraph layout model, click-drag, double-click and triple-click selection, copy to clipboard, Cmd+F search across the document, background Vision OCR for scans, and a read-only MCP server over the open document.
All 15 common annotation types rendered, default appearances generated when missing, link and popup actions. Creation and editing with an undo/redo command stack, electronic signatures, and on-device model actions on a selection.
Incremental save and full rewrite, page insert, delete, reorder and rotate, the macOS print dialog, merge and split, images → PDF, searchable PDF with invisible OCR text, and MCP write tools.
Display list with a spatial index, tiled rendering, page-level caching and prefetch, and a viewport-aware raster scheduler. Pages stay sharp through a fling instead of resolving after it stops.
In progress
AcroForm parsing and the field model are underway. Widget rendering, form interaction UI, validation, calculations and flattening are next.
Restabilising the XCUITest suite across the workspace multiplexer: tabs, panes and the shared raster cache.
Tagged PDF reading order for extraction, split by bookmark, and form values in print.
Upcoming
RC4 and AES (128/256-bit) decryption, password UI, permission enforcement, and encryption on save.
Edit text and images in place. The hardest thing a PDF editor does, and the reason the engine is ours.
Bookmarks and outline sidebar, page labels, night and sepia reading modes, full VoiceOver and keyboard accessibility, transparency and blend modes, and linearized fast-open.
The shared engine on iPad and iPhone: a pinch-to-zoom container, multitasking, Apple Pencil, and an interface adapted to touch.
Hardware scanner capture with image cleanup, and the same document open in two panes.
Apple platforms only
- macOS
- 14.0 (Sonoma) or later
- iPadOS and iOS
- 17.0 or later
- Processor
- Apple silicon