Polotno SDK
A PDF SDK built on a design schema, not a viewer
Parse a PDF into editable text, images, and vector paths. Edit it on a canvas, generate new documents from data, and export vector PDF, CMYK, or PDF/X.
60 days free trial on dev server
Most PDF SDKs are built around a viewer, with editing bolted on top. Polotno parses the document into a schema first, which is why the same canvas that edits an image can edit a PDF.
Editable layers, not a bitmap
One template, many documents
Runs where your data lives
How a PDF round-trips
Three steps, all available in the browser and under Node. Nothing is uploaded unless you choose server-side rendering.
01
Parse
@polotno/pdf-import turns the document into typed elements — text with font and colour, images with crop regions, vectors as paths, each with explicit coordinates.
02
Edit
Change anything through the same API the editor UI uses. Swap copy, recolour, delete pages, inject data, or apply a template — headlessly or with a canvas in front of a user.
03
Export
@polotno/pdf-export writes a vector PDF with selectable text, or a print-ready CMYK / PDF-X file. The built-in store.saveAsPDF() is the raster path when you want pixel parity instead.
import { pdfToJson } from "@polotno/pdf-import";
import { jsonToPDFBlob } from "@polotno/pdf-export/browser";
import { createStore } from "polotno/model/store";
// 1. Parse — text, images, and vector paths come back as typed elements
const json = await pdfToJson({ pdf: await file.arrayBuffer() });
const store = createStore({ key: "YOUR_KEY" });
store.loadJSON(json);
await store.waitLoading();
// 2. Edit — programmatically, or hand the store to the editor UI
store.pages[0].children
.filter((el) => el.type === "text" && el.text.includes("{{name}}"))
.forEach((el) => el.set({ text: el.text.replace("{{name}}", customer) }));
// 3. Export — vector PDF, text still selectable
const blob = await jsonToPDFBlob(store.toJSON());What goes in, what comes out
The same design schema sits in the middle of every conversion, which is why layout survives the trip.
Import
Export
Three things the SDK does with a PDF
Editing, generation, and conversion are separate capabilities built on the same parser and the same export pipeline.
Where the work runs
Identical schema, identical output. Pick per workload rather than per product.
In the browser
Parsing and rendering both run client-side. The file never leaves the user's machine, which matters when the documents are invoices, contracts, and statements. Encrypted PDFs are unlocked locally.
On your own servers
The same packages run under Node. Right when you need deterministic output, handle regulated data, or want render throughput that does not depend on user hardware.
Through the Cloud Render API
POST the design JSON and get a rendered file back at $0.004 per image. No render fleet to operate, no browser pool to keep warm.
Try it on your own documents first
Every tool below runs client-side, using the same functions the SDK exposes. Nothing is uploaded.
Common questions
Q: Is this a PDF viewer?
Q: What happens with a scanned PDF?
Q: Are form fields supported?
Q: Can I redact a document?
Q: Does the exported PDF keep selectable text?
Q: Which languages are supported?
Q: Can it compress an existing PDF?
Q: Do the tools upload my files?
Embed PDF editing in your product this week.
TRUSTED BY
100,000+
CREATORS
300+
BUSINESSES
