Put a real PDF editor inside your app.
PDF-SDK is a PDF editor SDK for iOS, Android, the web, Flutter and React Native. Your users edit the text already in the file, fill and build forms, mark up, sign and verify — all on their device.
Change the text already in the PDF, in any script — its font, size and colour — then move, rotate or restack it.
Fill in existing forms, or add text fields, checkboxes, radio groups and dropdowns of your own.
Highlight, draw and stamp, with the tools, colours and defaults you choose.
Handwritten signatures, digital signatures with a digital ID, and verification of the ones already there.
Insert and reorder pages, import them from other PDFs and extract them into new ones.
Change the text already in the PDF, in any script — its font, size and colour — then move, rotate or restack it.
Fits the stack you already ship.
A native PDF editor for each platform, installed the way that platform expects — the same engine and the same behaviour underneath.
iOS and iPadOS
- Native UI
- SwiftUI and UIKit
- Install with
- Swift Package Manager
- 1Add the package with Swift Package Manager.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
dependencies: [
.package(url: "<your PDF-SDK package URL>", from: "2.4.1"),
],
targets: [
.target(name: "MyApp", dependencies: [
.product(name: "PDFEditorUI", package: "pdf-sdk"),
]),
]import SwiftUI
import PDFEditorUI
@main
struct MyApp: App {
init() { PDFEditorSDK.setLicenseKey("PE1.eyJ2Ijox…") }
var body: some Scene { WindowGroup { ContentView() } }
}
// Present the editor; the edited PDF comes back as Data.
PDFEditorView(url: pdfURL) { edited in
try? edited.write(to: pdfURL, options: .atomic)
} onCancel: { }Mac
- Native UI
- Mac Catalyst
- Install with
- Swift Package Manager
The same PDFEditorUI as on iOS, with desktop behaviour — one code base for iPhone, iPad and Mac.
- 1Add the package with Swift Package Manager.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
// Mac Catalyst target — the same code as iOS
import SwiftUI
import PDFEditorUI
@main
struct MyApp: App {
init() { PDFEditorSDK.setLicenseKey("PE1.eyJ2Ijox…") }
var body: some Scene { WindowGroup { ContentView() } }
}
// Present the editor; the edited PDF comes back as Data.
PDFEditorView(url: pdfURL) { edited in
try? edited.write(to: pdfURL, options: .atomic)
} onCancel: { }Android
- Native UI
- Jetpack Compose and Views
- Install with
- Gradle
- 1Add the package with Gradle.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
dependencies {
implementation("com.pdfsdk:pdfeditor:2.4.1")
}// Once, in Application.onCreate()
PdfEditorSdk.setLicenseKey("PE1.eyJ2Ijox…")
setContent {
PdfEditorScreen(
pdfPath = file.absolutePath,
onSave = { bytes -> file.writeBytes(bytes) },
onClose = { finish() },
)
}Web
- Native UI
- TypeScript on WebAssembly
- Install with
- npm
- 1Add the package with npm.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
npm install ./pdfsdk-editor-2.4.1.tgzimport { PDFEditor } from '@pdfsdk/editor';
const editor = await PDFEditor.create(canvas, {
licenseKey: 'PE1.eyJ2Ijox…', // issued for your domain
});
editor.open(new Uint8Array(await file.arrayBuffer()));
const edited = editor.save(); // the edited PDFFlutter
- Native UI
- A Dart plugin over the native SDKs
- Install with
- Flutter plugin
- 1Add the package with Flutter plugin.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
dependencies:
pdf_editor:
path: vendor/pdf_editor # comes with your licenseawait PdfEditor.setLicenseKey('PE1.eyJ2Ijox…');
final String? edited = await PdfEditor.open(
path: file.path,
mode: PdfEditorMode.annotate, // optional
);React Native
- Native UI
- A TypeScript package over the native SDKs
- Install with
- npm
- 1Add the package with npm.
- 2Set your license key once, at startup.
- 3Open a PDF in the editor and get the edited file back.
npm install <the package that comes with your license>import { PdfEditor } from '@pdfsdk/react-native-pdf-editor';
await PdfEditor.setLicenseKey('PE1.eyJ2Ijox…');
const edited = await PdfEditor.open({ path: filePath });
if (edited) await upload(edited);One engine under every editor.
PDF-SDK is not a set of separate libraries. It is one cross-platform PDF SDK: one PDF engine sits under a native editor on each platform.
- The same result everywhereEvery editor renders and edits with the same core, so a document looks and behaves the same on iPhone, Android, Mac and the web.
- One core, one versionA fix or a feature in the core reaches every platform together — PDF-SDK is version 2.4.1 everywhere.
- Nothing to hostThe engine runs inside your app or the browser tab. There is no document server to run, and no document to upload.
Cross-platform packages
iOS and iPadOS
Android
Mac
Web
PDF-SDK core
Rendering, text editing, forms, annotations and signatures
Your users’ documents never leave their device.
PDF-SDK opens, edits and saves files inside your app or the browser tab. Here is exactly what goes over the network — and what never does.
What leaves the device
- The document, and every page in itNever
- Text, images, forms and signatures your users addNever
- Your users’ names, emails or accountsNever
- Device identifiersNever
- License key, your app’s ID and the SDK versionOnly for online licenses, to confirm the license. Standard licenses send nothing at all.To confirm
Our license server never stores your key or your users’ IP addresses. Individual check-ins are deleted after 35 days.
License key
PE1.eyJ2IjoyLCJpZCI6ImxpY19…
No watermark and no reduced mode — licensed means fully working.
Licensed per app. A key names the bundle IDs, package names or domains it covers, so a key copied into another app does not work.
Trial
The full SDK in any app on every platform, until it expires.
Perpetual
A one-time license per app, with a period of updates.
Subscription
Every release while you are subscribed.
Enterprise
Site, wildcard and OEM terms.
Made for the documents your users already handle.
Forms, contracts, reports and consents — PDF-SDK puts the whole editor where the work happens, in your app.
Banking and finance
Account-opening and loan forms, filled in and signed on a tablet in the branch — and still working if the network drops.
FormsSignaturesOfflineHealthcare
Patient intake and consent forms completed on the device, so the documents stay inside your app.
FormsSignaturesOn-deviceLegal
Contracts reviewed in the browser: clauses marked up, wording edited, the document signed and its signatures verified.
Mark upEdit textVerifyEducation
Worksheets annotated and assignments filled in by students, then marked up and returned by teachers.
Mark upFormsHR and onboarding
Offer letters and onboarding paperwork filled in, signed and returned without leaving your own app.
FormsSignaturesField service
Inspection reports filled in on site, with photos added and a signature at the end — no connection needed.
FormsImagesOffline
Questions, answered.
What teams ask before they add PDF-SDK to an app. Something else on your mind?
iOS and iPadOS, Mac (through Mac Catalyst), Android, the web, Flutter and React Native. Every platform uses the same engine, so a document looks and behaves the same everywhere.
Yes. Users change the existing text itself — in any script, with its font, size and colour — and can move, rotate or restack it. It is not limited to adding new text boxes on top of the page.
No. PDF-SDK opens, edits and saves files inside your app or the browser tab. An online license check sends the license key, your app’s identifier and the SDK version — never document content or user data.
Yes. Standard license keys are checked on the device and need no network at all. Online licenses confirm with the license server from time to time and keep working offline in between — 30 days by default.
Per app: a key names the bundle IDs, package names or domains it covers. Choose a perpetual license with a period of updates, a subscription, or enterprise terms for site, wildcard and OEM use.
Yes. A free 7-day trial unlocks every feature on every platform, in any app, with no watermark and no card — and the live demo runs the web editor in your browser.
Never. There is no watermark and no reduced mode: with a valid key the SDK works fully, and without one the editor does not open documents.
With the tools your platform already uses: Swift Package Manager on Apple platforms, Gradle on Android, npm on the web and in React Native, and a plugin in Flutter. Set your key once at startup and open a document.
Yes. On iOS, Android, Flutter and React Native you choose the modes and tools, hide or rename menu items, set the colour scheme and add your own actions.
Yes. Every platform also has a document API, so your code can make the same kinds of edits the editor offers — for example reading and replacing text, adding text and images, or filling forms — and save the result.
Try it in your app.
A free trial unlocks every feature on every platform, in any app. Open a document today.
Talk to us
Questions about licensing, several apps, volume, or OEM and site terms — we will work out what fits.