Skip to content

PDF-SDK 2.4.1 is out.See what’s new

PDF-SDK
Skip to Content
Docs

Build with PDF-SDK

One editor engine, shipped as a drop-in editor for the browser, iOS, iPadOS, Mac Catalyst and Android — and for Flutter and React Native through them — with a document API that does every edit from code. Pick your platform to integrate it in a few minutes.

Pick your platform

How it works

Every platform runs the same engine. It reads, renders and writes the document, and the editing logic — layout, hit-testing, selection, text editing, undo, forms, signing — lives in the engine, not in the platform wrapper. So a document edits the same way on every platform, and a fix reaches all of them at once.

PlatformYou addYou get
Web@pdfsdk/editor + the wasm/ folderPDFEditor over a canvas you provide; you build the chrome
iOS · iPadOS · CatalystSwift package, product PDFEditorUIPDFEditorView / PDFEditorViewController — the complete editor UI
Androidcom.pdfsdk:pdfeditorPdfEditorScreen (Compose) / PdfEditorView — the complete editor UI
Flutterthe pdf_editor pluginPdfEditor.open(…) — the native editor, full screen, and the edited file back
React Native@pdfsdk/react-native-pdf-editorPdfEditor.open(…) — the same, from JavaScript

Integration in three steps

  1. Add the package for your platform. Access to the packages comes with your license.
  2. Set your license key once at startup — the key issued for your domain, bundle identifier or package name. Without a valid key the editor does not open documents. See License keys.
  3. Open a PDF and receive the edited document when the user saves — the bytes on iOS, Android and the web, a file path in Flutter and React Native.

What the editor does

  • Edit the text already in the file — retype, restyle (bold, italic, underline, strike, colour, size, font), move and resize it in the document's own fonts, with every script shaped correctly.
  • Every object is a layer — select, move, resize, rotate, recolour, duplicate and delete text, images and vector paths; group and multi-select.
  • Markup and drawing — highlight, underline, strikeout, squiggly; freehand ink, rectangles, ellipses, lines and arrows; notes, stamps, links, and sounds on the web.
  • Forms — fill AcroForm fields, author new ones (text, check box, radio, list, dropdown; not on Mac Catalyst), flatten.
  • Pages — insert, duplicate, rotate, reorder and delete.
  • Signatures — draw a signature, or apply a real PKCS#7 digital signature and verify existing ones.
  • Undo everything — a per-page history, with structural page operations included.
  • Encrypted documents open with their password and are saved encrypted with the same one.

Output is a real vector PDF — edits are written back as PDF objects, never as a flattened picture.

All of this is in the iOS, Android and web editors, and in Flutter and React Native through them. On the Mac (Mac Catalyst) the editor has everything except the Form Editor mode.

Customize the editor

One configuration shapes the editor, and it means the same thing on iOS, Android, Flutter and React Native: which modes and tools appear and in what order, their names and icons, the colour scheme, selection and search colours, handle shape and size, your fonts in the font picker, the first-use style of each markup tool and the pen, the zoom range, haptics and first-run hints. iOS and Android also take your own tools and menu items, which call your code with the document as it stands. On the web your page draws the toolbar, so the same choices are calls on the editor. Every option narrows or restyles; leave it out and the editor stays as it ships.

PlatformWhere
iOS & Mac CatalystPDFEditorConfiguration — iOS guide
AndroidPdfEditorConfiguration — Android guide
WebCalls on PDFEditor — Look and feel, coming from iOS or Android
FlutterPdfEditorConfiguration — Flutter guide
React NativeThe configuration option — React Native guide

Edit documents from code

Everything a user can do in the editor can be done from code. Open a PDF with no UI — a templating, translation or form-filling job — or reach the document an editor is showing, where each change appears at once and undoes like an edit by hand.

  • Read every layer of a page — text, image, note, signature, drawing, sound, shape, vector — with its frame, rotation, opacity, stacking, link, and for text its font, size, style and colour; the page's text; search matches; form fields; metadata.
  • Change a text layer's text in any script (the font, size, colour and position stay; the system's fonts fill in letters the layer's font lacks; it can shrink to fit), its font and style, any layer's colour, stroke, opacity, frame, rotation, stacking, link or picture; mark text up; delete, duplicate or copy layers.
  • Create text, images (a photo, signature, drawing or stamp), shapes and form fields.
  • Pages and documents — insert, delete, move, duplicate and rotate pages, import pages from another PDF, extract pages into a new one, render a page, undo and redo, save.

A layer is addressed by its page and an id that keeps naming it while other layers change, are added or are removed. Geometry is in page points from the top-left corner.

PlatformHeadlessThe document an editor shows
iOS & Mac CatalystPDFDocumentEditor(data:)onDocumentReady — guide
AndroidPdfDocumentEditor(bytes)onDocumentReady — guide
WebPDFDocumentEditor.open(bytes)editor.document — guide
FlutterPdfDocument.open(bytes)PdfEditor.open(onDocumentReady:) — guide
React NativePdfDocument.open(base64)PdfEditor.open({ onDocumentReady }) — guide

Localize the editor

Every word the editor shows has a key, the same on every platform, with English as its built-in text. Give text for the keys you want translated — a dictionary, or on iOS and Android a lookup function — and the rest stay English. With nothing set, the editor uses your app's own translations in its current language. Right-to-left languages mirror the editor. See iOS, Android, Flutter and React Native; the web SDK draws no words of its own beyond a new text box's starting text.

API reference

Every public type and member, generated from each SDK's sources:

PlatformReference
WebWeb API reference — PDFEditor, the document API, digital signatures
iOS, iPadOS & Mac CatalystiOS API reference — module PDFEditorUI
AndroidAndroid API reference — package com.pdfsdk.editor
FlutterFlutter API reference — package pdf_editor
React NativeReact Native API reference — @pdfsdk/react-native-pdf-editor

Requirements

PlatformMinimumNotes
iOS / iPadOS15Swift 6 toolchain; built and tested with Xcode 27
Mac Catalyst15Apple silicon and Intel
AndroidAPI 26 (Android 8.0)arm64-v8a; 16 KB page-size compatible
WebWebAssembly, WebGL2, SharedArrayBufferServed over HTTPS with COOP + COEP — see Hosting

Browsers, devices and toolchains in detail: System requirements.

Getting help

Questions about licensing, pricing or a trial key go to sales. Integration questions come with your support plan — see Pricing.