Maheep Kumar.

← Projects

FynPDFPDF reader and editor for macOS, iPadOS and iOS

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.

Core object model

The complete PDF object graph: booleans, numbers, strings, names, arrays, dictionaries, streams, and indirect references with full resolution.

Parser pipeline

Byte-level tokenizer, object parser, cross-reference table and stream handling, and a document structure reader. Handles incremental updates and hybrid xref files.

Renderer

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.

Font engine

Standard 14 fonts, embedded TrueType, CFF/Type1C, CIDFontType0, Type 3 glyph programs, composite CMap fonts, and vertical writing.

Color system

Device, calibrated, ICC, indexed, separation and DeviceN color spaces. Tiling patterns, axial and radial shadings, and Coons and tensor patch meshes.

Image handling

Raw samples, JPEG, JPEG 2000, inline images, stencil masks, soft masks, and color-key masking, with the full filter pipeline.

Text layer

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.

Annotations and signing

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.

Writer

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.

Custom PDF engine

A ground-up implementation of the PDF 1.7 spec, so nothing a PDF can do is out of reach.

Sharp while you fling

Tiled rendering with a viewport-aware raster scheduler. Pages stay sharp mid-scroll instead of resolving a beat after you stop.

One engine

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.

Spec-compliant

Every feature is verified against ISO 32000-1:2008, and every render is checked against reference images with a perceptual ΔE visual-regression gate.

Agent-ready

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.

On-device intelligence

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

Phases 0 and 1: Foundation and parser

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.

Phase 2: Renderer

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.

Phase 3: Viewer and workspace

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.

Phase 4: Text layer

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.

Phases 5 and 6: Annotations and signing

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.

Phase 7: Writer, print and merge

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.

Phase 11: Scroll performance

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

Phase 8: Forms

AcroForm parsing and the field model are underway. Widget rendering, form interaction UI, validation, calculations and flattening are next.

Phase 3K: Automated UI tests

Restabilising the XCUITest suite across the workspace multiplexer: tabs, panes and the shared raster cache.

Phase 4B-b and 7 leftovers

Tagged PDF reading order for extraction, split by bookmark, and form values in print.

Upcoming

Phase 9: Security

RC4 and AES (128/256-bit) decryption, password UI, permission enforcement, and encryption on save.

Phase 10: Content editing

Edit text and images in place. The hardest thing a PDF editor does, and the reason the engine is ours.

Phase 11: Polish to v1.0

Bookmarks and outline sidebar, page labels, night and sepia reading modes, full VoiceOver and keyboard accessibility, transparency and blend modes, and linearized fast-open.

Phase 12: iPadOS and iOS

The shared engine on iPad and iPhone: a pinch-to-zoom container, multitasking, Apple Pencil, and an interface adapted to touch.

Phases 13 and 14: Beyond

Hardware scanner capture with image cleanup, and the same document open in two panes.

Apple platforms only

FynPDF is not a portable app that happens to run on a Mac. It is built for macOS, iPadOS and iOS, with one engine underneath and an interface that belongs on each. The Mac app is what runs today; iPad and iPhone follow. Follow progress here or by RSS.
macOS
14.0 (Sonoma) or later
iPadOS and iOS
17.0 or later
Processor
Apple silicon