One native PDF SDK, in the language you already use
Create, edit, render, sign, secure and convert PDF from a single native engine — with bindings for C, C++, .NET, Delphi, PHP, Python, Node and Flutter. Royalty-free to redistribute. Verified offline. No activation call, ever.
- No card, no sales call
- Evaluation watermark only
- Public, unrestricted download
Perpetual licences from EUR 249.00 per developer seat. Talk to an engineer →
The engine itself
LumasPDF SDK
One native engine, packaged for every stack it is licensed on. Pick the one you build with — the engine inside is the same.
- Windows C/C++
- Windows on ARM64
- Windows ActiveX / COM
- .NET (source P/Invoke)
- NuGet package
- Linux on Intel
- Linux on ARM
- macOS
- iOS
- Android
- PHP
- Python
- Delphi / Object Pascal
- ASP.NET Core
- Flutter
- Node.js
- TypeScript
Every package above licenses the same engine, on the platforms that package covers. LumasReader — beside this — is one application built over one of them.
LumasPDF Reader
FreeA full desktop PDF reader with no PDF code of its own. Every feature below is the engine doing the work.
-
Opens what other readers stall on
A 1,113-page document is on screen in under half a second, because pages are parsed when they are looked at rather than at open.
ras* page cache -
Annotate, comment, reply
Highlight, note, draw and stamp; a comments panel that summarises the document and exports the lot to FDF.
Annotation APIs -
Fill in forms and sign
AcroForm fields fill, reset, import and export. Fill & Sign places typed text, ticks and a stored signature on any page.
Forms + signatures -
Measure and stamp
Distance, perimeter and area with real drawing units, and a stamp gallery that writes its own appearance streams.
Measure + appearance -
Search, extract, read aloud
Find across the whole document including embedded fonts, pull the text back out, or have it read to you with the sentence lit.
Text extraction -
Runs with nothing behind it
One executable, no runtime to install, no account and no network call — on Windows, Linux and macOS from one source tree.
Static linking
Free LumasPDF Reader — no account, no licence key
None of this is Reader code. It is one native engine, linked into an application — the same engine, the same exports and the same licence terms you get on the download above. What the Reader does, your software can do.
LumasReader ships from this repository and is built from the engine in the current release — not a mock-up drawn for this page.
Built for
Teams that ship software, not documents
LumasPDF is an engine you embed and redistribute. That shapes who it suits — and we would rather say so than show a wall of logos nobody gave us permission to print.
- Independent software vendors redistributing PDF inside a product
- Enterprise line-of-business and back-office systems
- Document automation and output management
- Regulated and on-premises environments with no outbound network
- Engineering teams replacing a per-document or per-server licence
What it does
Six things teams need a PDF engine for
Grouped by the outcome rather than by the shape of the API. The number under each is the manual's own count for the areas it covers.
One engine, your stack
Seventeen packages, so you licence what you actually build with
A package is not a marketing tier. The licence key names the one you bought, and the engine honours it on the platforms that package covers — which is why every platform list on this site is generated from the engine rather than written by hand.
Why one engine
The same code produces the same PDF, whatever you call it from
Every binding is a thin translation over one native engine. There is no second implementation to drift, so a document generated by the Python service and one generated by the .NET desktop client are produced by the same code.
The binding for your language
An idiomatic surface: a package, a unit, a module or a header. It carries no PDF logic of its own — it translates calls.
The native library
Every documented API, compiled for your platform. This is where layout, fonts, rasterising, encryption and conformance happen.
The document
A file, a stream or a bitmap — identical across bindings, because there is only one implementation underneath them.
Getting started
From download to a first PDF
Three steps, and the second one is a program that already exists.
-
Take the package for your stack
Public download, no account. Each package installs the way that language expects — a package manager, an archive or a header and a library.
-
Run the example that ships with it
Every package carries worked examples. The first one writes a PDF and is the same file this site shows you before you download.
-
Add a key when you are ready
Unlicensed output is watermarked; nothing else is restricted. Register for a trial key to remove it, and buy when the evaluation is done rather than before it starts.
In depth
The areas the engine is largest at
Ordered by how much of the documented surface each one is, so the page leads with what the engine actually is — and stays correct when that changes.
Use cases
What teams build with it
Each one names the packages it needs and the capability areas it leans on, so "can it do what we want" is a question with an answer rather than a meeting.
Deployment
Runs where you already run
Windows, Linux, macOS, iOS and Android across the architectures below. It is a library in your process — no daemon, no print server, no sidecar container, and nothing to keep alive.
Air-gapped and on-premises
Licence verification is local. Nothing in the engine opens a socket to us, so a network with no outbound route is an ordinary deployment rather than an exception.
Containers and serverless
No activation state to persist and no licence server to reach, so an image that scales to zero and back works the same as a long-lived host.
Desktop and mobile
The same engine links into a desktop application or a mobile app, so a document produced on a laptop and one produced on a phone are produced by the same code.
Licensing
A licence that does not become an operations problem
The three things procurement asks, answered before they have to ask.
Procurement
Everything your purchasing process is going to ask for
The paperwork is not an afterthought here. If your process needs a quote before a purchase order and an invoice after it, that is the supported path rather than an exception someone has to arrange.
- A written quote that survives a price change — the configuration is captured, not re-derived later.
- Purchase order and net terms, with keys delivered on approval rather than on payment.
- A VAT invoice showing the tax treatment for your country, computed before you commit.
- Organisation ownership so licences belong to the company, not to whoever created the account.
- Multiple seats and several packages on one agreement.
- A security and data-flow statement for the review your team will run.
Two thirds of the questionnaire is already answered
The engine makes no network request, collects no telemetry and has no activation step. For most reviews that is the answer to most of the form, and it is a property of the product rather than a promise about our infrastructure.
Lifecycle
What happens after you buy
A report becomes a public issue, an issue becomes a release, and the release names the build your key covers. All three are visible without an account.
Before you ask
Questions that decide the answer
Does the SDK contact your servers?
No. The engine makes no network calls at all. A licence key is verified locally against a public key compiled into the binary, so it works air-gapped, behind a proxy, and while our site is down. Nothing about your usage is visible to us because nothing is sent.
Is there an activation step?
No. There is no account to register with the engine and no protocol to implement. You pass the key to the engine and it verifies the signature in your own process.
What happens to my software when maintenance ends?
Nothing. Maintenance is a window over build dates: the engine compares your key against the date the binary was built, never against the clock. Builds inside your window stay usable permanently, including in software you have already shipped. Ending maintenance stops new downloads and support, and reaches nothing you have already built.
Can a licence key be recalled or switched off remotely?
No, and we say so rather than implying otherwise. There is no licence server and no revocation list. A refund ends download entitlements and maintenance, which are real and enforceable; the key itself keeps verifying, and continuing to ship the engine after a refund is a breach of the terms rather than something the software prevents.
Are seat counts enforced?
No. The number is recorded in the key and nothing counts installations. The portal gives you a seat register for your own compliance records; it is not an enforcement mechanism.
How do I evaluate the SDK?
Download a package and run it. Unlicensed, every function works and the output carries a demonstration mark. There is no time limit, no registration and no feature gate, so you can answer "does this do what I need" completely before spending anything.
Which of the seventeen packages do I need?
The one whose platform list covers where your software RUNS, not the one named after the language you write in. The package is recorded in your key and the engine refuses it on a platform that package does not ship binaries for. Each package page lists its platforms, generated from the same source the engine is built from.
Can I add the optional capabilities to any edition?
No. The two paid extras are available only on the upper two editions. The engine computes the effective feature set from the edition first, so a key naming an extra its edition cannot carry would grant nothing. The configurator will not let you order that combination.
Write your first PDF this afternoon
The download is public and unrestricted, and it runs without a key. Register only when you want the watermark gone.
No card. No activation. No sales call unless you ask for one.