Project 03 — PDF On

Scan, fill in,
sign, done.

PDF On is a PDF scanner and editor for the iPhone: paper becomes a clean PDF, forms can be filled in, photographed ones included, signature and passport photo land in the right place, and an ID card or passport goes onto one sheet in original size. Text recognition runs on the device. No account, no server, no subscription: a document leaves the phone only when you share it yourself.

By Abbas Hoseiny·iOS·On the App Store

A form arrives as a PDF or on paper and has to be filled in, signed and sent back today, from the phone. The usual scanner apps want an account or a subscription for that, or upload the documents to a cloud. PDF On does everything on the iPhone: scan, fill in, sign, copy an ID, recognise text, share. The app is free and on the App Store.

PDF On home screen: scan, photos, camera, file
PDF On: a photographed form being filled in, the text lands in the boxes
PDF On: ID copy with front and back in original size
Fig. 1 — the appHome · Form · ID

The home screen offers scan, photos, camera and file. A photographed form is tapped and typed into, the text lands in the box. ID card and passport go front and back onto one sheet in original size.

What the app does

Scan, fill in, keep.

Scan and create PDFs
Scan documents with automatic edge detection, or take a photo and let it be straightened. PDFs from photos, files and other PDFs; page size, layout and quality selectable; date stamps; password protection.
Fill in any form
Tap a field and type: the text lands inside the box, on the line. Works with real PDF forms and with photographed or scanned ones. Name, address and phone appear as suggestions above the keyboard.
Signature and photo
Sign with your finger or photograph your signature on paper; it lands over the signature line. A passport photo goes into the automatically detected photo frame.
ID card and passport
Front and back on one sheet in true original size, optionally enlarged, in colour or grayscale, with cut lines and a watermark such as “Copy for landlord”.
Text recognition, offline
On-device text recognition makes scans searchable. Copy the text, search inside the document or export it as a Word document.
Read and highlight
Full-screen reading mode with trimmed margins. Highlight with one swipe in four colours, add notes, share highlights as a list. The app remembers where you stopped.
Manage pages
Reorder, rotate, crop, straighten and delete pages. Merge PDFs. Convert Word, Excel, PowerPoint, Pages, Numbers, Keynote, text and HTML files to PDF.
Private by design
Fully offline. No account, no ads, no tracking. Optional app lock with Face ID. Share extension: send photos and PDFs from other apps to PDF On.
PDF On, reading mode with highlights
PDF On: list of all highlights
PDF On: arrange, crop and merge pages
Fig. 2 — read and arrangeReading mode · Highlights · Pages

Full-screen reading mode with highlights in four colours and a list of all highlights. Reorder, rotate, crop and merge pages.

Technology

How the app is built

Apple frameworks only, no third-party libraries, no network. Every processing step runs off the main thread, every save is a transaction.

1. Structure

FrameworksSwift 6 with strict concurrency. Interface in SwiftUI with UIKit wrappers where PDFKit needs them. Processing in dedicated actors, never on the main actor.
No networkThe app sends nothing and loads nothing: no analytics, no account, no cloud. The only exception is address lookup for the location stamp, and only when it is switched on.
ErrorsForeign data such as PDFs, images and input is never force-unwrapped. A broken document produces a readable message, not a crash.

2. Documents and storage

DraftsA versioned JSON envelope per draft. Unreadable drafts stay untouched on disk, the others are loaded and the error is shown.
ImagesOn import only the EXIF capture date, no GPS data. Every image is limited to 4000 pixels, every preview to 400; no lists of full-size images in memory.
SavingBackups of PDF and overlays plus a recovery marker. An interrupted operation restores PDF, page identifiers and index together.

3. Forms

Real formsPDF form fields are driven through PDFKit. Fonts come from the original resources so the appearance is preserved.
Photographed formsTap a box, type: the text is placed inside the box on the line, checkmarks snap in, Return jumps on.
Own writerWhen pages are copied, PDFKit loses the field trees. An own writer on CoreGraphics rebuilds field and widget relationships, keeps groups and writes only reachable objects so removed pages leave nothing hidden behind.

4. Text recognition

On the deviceText recognition with the Vision framework, accurate mode with language correction, without internet. Recognition languages are filtered against what the particular iPhone supports.
Invisible layerRecognised text sits as an invisible text layer over the page, in the same scale and rotation. The original page is never converted into an image.
LibraryExisting PDFs are recognised too: rasterised at 200 dpi for recognition only, form tree and links are kept, a previous own layer is replaced.

5. Signature and ID

SignatureDrawn in landscape with PencilKit as a transparent PNG, or from paper: ink is extracted with a strength slider and cropped pixel-accurately.
ID cardID-1 size 85.60 × 53.98 mm. “Side by side” is offered only when both sides fit at 100 %; a print hint asks for actual size so the printer does not scale.
PhotoThe photo frame of an application form is detected and the picture inserted to fit.

6. Sharing, Shortcuts, lock

SharingA share extension with a signed App Group accepts photos and PDFs from other apps; the inbox is atomic and duplicate hand-overs are recognised.
ShortcutsThree App Intents for background workflows, in every app language.
LockDevice authentication with Face ID, grace periods of 0, 60 or 300 seconds and a privacy shield when switching apps.

7. Fact sheet

RoleConcept, development, release and support
PlatformiPhone, iOS 17 or later
TechnologySwift 6, SwiftUI and UIKit, PDFKit, Vision, PencilKit, CoreGraphics, App Intents
Languages46 app languages, full right-to-left layout for Arabic, Persian and Urdu
DistributionApp Store, free, no account, no subscription · app website
CodeProprietary, not public