SOFTWARE DEVELOPMENT KITS

The document SDKs you’re looking for

PDF SDKs built by developers, for developers — to add high-performance viewing, editing, signing, redaction, and data extraction to any app. Powered by AI. Trusted across web, mobile, and server.


Choose your SDK

Build exactly where your users are — with full control, high performance, and deep integration across every platform.

Web Viewer

Embed fast, full-featured document viewing into your web app — with support for React, Angular, Vue, and other modern frameworks.

Server processing

Add scalable document processing to your backend — generate, convert, compress, extract, automate, and more with .NET or Node.js.

Mobile viewers

Deliver smooth, native PDF viewing on iOS, Android, and cross-platform apps — with high-fidelity rendering and a customizable UI.


Easy to use — easier to customize

hero background

Build with the most intuitive and flexible PDF APIs

Integrate document generation, editing, and signing into your app with cross-platform SDKs built by developers, for developers. Explore features, tweak the UI, and export working code in seconds.


Get started in three steps

  1. Choose your language and framework
  2. Follow the step-by-step installation guide
  3. Run your app

Nutrient Web SDK

import PSPDFKit from "pspdfkit";
// Obtain a PSPDFKit document instance.
const instance = await PSPDFKit.load({
container: "#pspdfkit",
document: "<document-file-path>",
licenseKey: "<license-key>"
});
console.log("PSPDFKit for Web is ready!");
console.log(instance);

Document Authoring Library

import DocAuth from '@pspdfkit/document-authoring';
const docAuthSystem = await DocAuth.createDocAuthSystem({
licenseKey: '<license-key>',
});
const editor = await docAuthSystem.createEditor(
document.getElementById('editor'),
{
document: await docAuthSystem.createDocumentFromPlaintext('Hi there!'),
}
);

Nutrient iOS SDK

import PSPDFKit
import PSPDFKitUI
import SwiftUI
// A `Document` is the container for your PDF file.
let document = Document(url: documentURL)
var body: some View {
// A `PDFView` will present and manage the PSPDFKit UI.
PDFView(document: document)
.scrollDirection(.vertical)
.pageTransition(.scrollContinuous)
.pageMode(.single)
}

Nutrient Android SDK

package com.your.package
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.pspdfkit.ui.PdfActivityIntentBuilder
// We need to use a Compat activity for the PdfFragment.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Get the document path from the application assets.
val documentUri = Uri.parse("file:///android_asset/document.pdf")
// Build the `Intent` for launching the `PdfActivity`.
val intent = PdfActivityIntentBuilder.fromUri(this, documentUri)
.build()
startActivity(intent)
}
}

Nutrient Flutter SDK

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pspdfkit_flutter/pspdfkit.dart';
const String DOCUMENT_PATH = 'PDFs/Document.pdf';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
void showDocument(BuildContext context) async {
final bytes = await DefaultAssetBundle.of(context).load(DOCUMENT_PATH);
final list = bytes.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final tempDocumentPath = '${tempDir.path}/$DOCUMENT_PATH';
final file = await File(tempDocumentPath).create(recursive: true);
file.writeAsBytesSync(list);
await Pspdfkit.present(tempDocumentPath);
}
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return MaterialApp(
home: Scaffold(body:
Center(
child: ElevatedButton(
onPressed: () => showDocument(context),
child: Text('Show Document'),
)
)
)
);
}
}

Nutrient React Native SDK

import React, {Component} from 'react';
import {Platform} from 'react-native';
import PSPDFKitView from 'react-native-pspdfkit';
const DOCUMENT =
Platform.OS === 'ios' ? 'Document.pdf' : 'file:///android_asset/Document.pdf';
export default class PSPDFKitDemo extends Component<{}> {
render() {
return (
<PSPDFKitView
document={DOCUMENT}
configuration={{
showThumbnailBar: 'scrollable',
pageTransition: 'scrollContinuous',
scrollDirection: 'vertical',
}}
ref={this.pdfRef}
fragmentTag="PDF1"
style={{flex: 1}}
/>
);
}
}

Nutrient for Cordova

// Install the plugin first:
// cordova plugin add pspdfkit-cordova
document.addEventListener('deviceready', function() {
// Open a PDF document
PSPDFKit.present('document.pdf', {
pageTransition: 'scrollContinuous',
scrollDirection: 'vertical',
backgroundColor: '#FFFFFF'
});
}, false);

Nutrient for Xamarin

using PSPDFKit.Model;
using PSPDFKit.UI;
using PSPDFKit.Instant;
var configuration = PSPDFConfiguration.FromConfigurationBuilder ((builder) => {
builder.PageMode = PSPDFPageMode.Single;
builder.PageTransition = PSPDFPageTransition.ScrollContinuous;
builder.ScrollDirection = PSPDFScrollDirection.Vertical;
}));
var document = new PSPDFDocument (NSUrl.FromFilename ("document.pdf"));
var pdfViewController = new PSPDFViewController (document, configuration);

Nutrient for Ionic

import { Component } from '@angular/core';
import { PSPDFKit } from '@ionic-native/pspdfkit/ngx';
@Component({
selector: 'app-pdf',
templateUrl: 'pdf.page.html'
})
export class PdfPage {
constructor(private pspdfkit: PSPDFKit) {}
openPDF() {
this.pspdfkit.present('document.pdf', {
pageTransition: 'scrollContinuous',
scrollDirection: 'vertical'
});
}
}

Nutrient .NET SDK

using (GdPictureDocumentConverter oConverter = new GdPictureDocumentConverter())
{
// Select the source document and its file format (DOCX, DOC, XLSX, XLS, PPTX, PPT).
oConverter.LoadFromFile("input.docx", GdPicture14.DocumentFormat.DocumentFormatDOCX);
// Convert the source document to PDF.
oConverter.SaveAsPDF("output.pdf", PdfConformance.PDF);
}

Document Engine

# You simply supply a list of document operations to apply.
curl -F file=@Example.pdf \
-F operations='{"operations":[{"type": "flattenAnnotations"}]}' \
http://localhost:5000/process \
--output result.pdf

Nutrient Java SDK

// Initialize PSPDFKit with your activation key.
PSPDFKit.initialize("YOUR_LICENSE_KEY_GOES_HERE");
// Open a document to work on.
File file = new File("assets/default.pdf");
PdfDocument document = new PdfDocument(new FileDataProvider(file));
// Add a new stamp annotation.
JSONObject jsonObject = new JSONObject();
jsonObject.put("bbox", new float[]{0, 0, 100, 50});
jsonObject.put("pageIndex", 0);
jsonObject.put("type", "pspdfkit/stamp");
jsonObject.put("stampType", "Approved");
jsonObject.put("opacity", 1);
jsonObject.put("v", 1);
document.getAnnotationProvider().addAnnotationJson(jsonObject);
// Export the changes to Instant Document JSON.
File jsonFile = new File("out/instantOutput.json");
if (jsonFile.createNewFile()) {
document.exportDocumentJson(new FileDataProvider(jsonFile));
}
// Render the first page and save to a PNG.
BufferedImage image = document.getPage(0).renderPage();
File pngfile = new File("out/test.png");
boolean success = ImageIO.write(image, "png", pngfile);}

Managed Document Engine

# You simply supply a list of document operations to apply.
curl -F file=@Example.pdf \
-F operations='{"operations":[{"type": "flattenAnnotations"}]}' \
http://localhost:5000/process \
--output result.pdf

Nutrient for Windows

// This loads a PDF from `Assets` as soon as the `PdfView` is ready.
private async void PdfViewInitializationCompletedHandler(PdfView sender, Document args)
{
try
{
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/document.pdf"));
if (file == null) return;
await sender.OpenStorageFileAsync(file);
}
catch (Exception e)
{
var messageDialog = new MessageDialog(e.Message);
await messageDialog.ShowAsync();
}
}
// This loads a PDF from a file picked by the user in the UI.
private async void Button_OpenPDF_Click(object sender, RoutedEventArgs e)
{
// Open a `Picker` so the user can choose a PDF.
var picker = new FileOpenPicker
{
ViewMode = PickerViewMode.Thumbnail,
SuggestedStartLocation = PickerLocationId.DocumentsLibrary
};
picker.FileTypeFilter.Add(".pdf");
var file = await picker.PickSingleFileAsync();
if (file == null) return;
// Open and display it in the PSPDFKit `PdfView`.
var documentSource = DocumentSource.CreateFromStorageFile(file);
await PdfView.Controller.ShowDocumentAsync(documentSource);
}

Nutrient Mac Catalyst SDK

import PSPDFKit
import PSPDFKitUI
import SwiftUI
// A Document is the container for your PDF file.
let document = Document(url: documentURL)
var body: some View {
// A PDFView will present and manage the PSPDFKit UI.
PDFView(document: document)
.scrollDirection(.vertical)
.pageTransition(.scrollContinuous)
.pageMode(.single)
}

Nutrient Electron SDK

const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const mainWindow = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
mainWindow.loadFile('index.html');
}
app.whenReady().then(createWindow);
// In your renderer process (index.html):
// <script>
// import PSPDFKit from 'pspdfkit';
//
// PSPDFKit.load({
// container: '#pspdfkit',
// document: 'document.pdf',
// licenseKey: '<license-key>'
// });
// </script>

PDF Generation API

curl -X POST https://api.pspdfkit.com/build
-H "Authorization: Bearer your_api_key_here"
-o result.pdf
-F index.html=@index.html
-F instructions='{
"parts": [
{ "html": "index.html" }
]
}'

PDF Conversion API

curl -X POST https://api.pspdfkit.com/build
-H "Authorization: Bearer your_api_key_here"
-o converted.pdf
-F document=@Example1.docx
-F instructions='{
"parts": [
{ "file": "document" }
]
}'

PDF Editor API

curl -X POST https://api.pspdfkit.com/build
-H "Authorization: Bearer your_api_key_here"
-o merged.pdf
-F part1=@Example1.pdf
-F part2=@Example2.pdf
-F instructions='{
"parts": [
{ "file": "part1" },
{ "file": "part2" }
]
}'

PDF OCR API

curl -X POST https://api.pspdfkit.com/build
-H "Authorization: Bearer your_api_key_here"
-o result.pdf
-F document=@Example.pdf
-F instructions='{
"parts": [
{ "file": "document" }
],
"actions": [{
"type": "ocr",
"language": "english"
}]
}'

Accelerate development

Ship faster with enterprise-grade SDKs built on years of R&D — so you can focus on features, not edge cases.


  • Clean APIs and live examples
  • Handles document complexity for you
  • Scales with your stack
Save time and money

Skip PDF maintenance and brittle tools. Nutrient handles updates, rendering, and support — so your team can focus on what matters.


  • No technical debt or glue code
  • Fewer bugs, faster releases
  • Lower long-term costs
AI at your fingertips

Power document workflows with built-in AI. Summarize, translate, redact, or build agentic flows — all in just a few lines of code.


  • Native AI features, no bolt-ons
  • Supports complex automation
  • Simple, fast integration

One platform. All your document needs.


Document interaction

Build exceptional user-facing document experiences — from fast PDF viewing to collaborative editing, markup, and forms — right inside your app.

Document processing

Automate how documents are handled behind the scenes. Convert, classify, scan, and extract data with server-side SDKs or cloud APIs.

Document finalization

Handle approvals and secure delivery with integrated signing and redaction tools that ensure accuracy, auditability, and compliance.

Document assurance

Meet the strictest data protection and accessibility standards with built-in security, PDF/A support, audit trails, and WCAG-compliant rendering.


Document AI built in — wherever you build

One intelligence across SDKs, cloud, low-code, and workflows. The same document-tuned AI engine powers every Nutrient product, adding real insight, automation, and compliance in a single drop-in.

Understand

Summaries, smart diffs, and chat answers in seconds.


Protect

Confidence-scored redaction with full audit trails.


Extract

Prompt-based data capture, no templates.


Automate

No-code workflows route documents and data wherever they’re needed.


Deploy

Self-host, run on Nutrient-managed infrastructure, or use our cloud service — same AI engine, same results.


Discover why developers love Nutrient SDKs

Angelica Nierras's headshot
Angelica Nierras
Chief Growth Officer
Nutrient help us significantly accelerate our time to market, provide key services to our clients, and reliably deliver solutions that we can easily integrate into our portfolio.
Faria Education Group

"Great tool that covers one of our product’s core functionalities."

Dmytro H.
Principal Engineer

"A true partner in delivering value for our customers."

Kim T.
Small Business (50 or fewer employees)

"The software is reliable and easy to integrate with."

Verified User in Computer Software
Mid-Market (51–1,000 employees)

Shift your product development into overdrive with our PDF SDKs

+63%
Reduction in engineering investment for document features
+80%
of customers report faster time to market

Frequently asked questions

What is a PDF SDK?

A PDF SDK (software development kit) is a collection of tools, libraries, and documentation that enables developers to integrate PDF functionality directly into their applications. With a PDF SDK, you can add features like viewing, editing, annotating, form filling, digital signing, and document conversion without building these capabilities from scratch.

Can I use Nutrient PDF SDKs on multiple platforms?

Yes. Nutrient offers PDF SDKs for all major platforms — including Web (JavaScript), iOS, Android, React Native, Flutter, .NET, and Java. Our SDKs share a consistent API design across platforms, making it easier to maintain cross-platform applications with unified PDF functionality.

What file types and frameworks are supported by Nutrient’s PDF SDKs?

Nutrient SDKs support PDF as the primary format, along with images (PNG, JPEG, TIFF), Microsoft Office documents (Word, Excel, PowerPoint), and more through our conversion capabilities. We provide native integrations for popular frameworks like React, Vue, Angular, and Next.js, and support both client-side and server-side implementations.

Can I customize Nutrient’s PDF SDKs to match my app’s UI?

Absolutely. Nutrient SDKs offer extensive customization options, including theming, custom toolbars, branded UI components, and the ability to build completely custom interfaces using our APIs. You can match your brand colors, fonts, and design patterns while maintaining full PDF functionality.

Are Nutrient’s PDF SDKs secure?

Yes. Security is a top priority. Our SDKs support encryption, password protection, digital signatures, and redaction, and they comply with standards like PDF/A and PDF/UA. We offer both client-side processing for sensitive documents and secure server-side options. Our solutions are used in highly regulated industries, including healthcare, finance, and government.

How do Nutrient PDF SDKs ensure high-fidelity PDF rendering across different browsers and devices?

Nutrient uses advanced rendering engines optimized for each platform. Our Web SDK leverages WebAssembly for consistent rendering across all browsers, while native SDKs use platform-specific optimizations. This ensures accurate display of complex PDFs, including forms, annotations, embedded fonts, and special formatting — regardless of the viewing environment.

What resources are available for developers?

We provide comprehensive documentation, API references, integration guides, code samples, and video tutorials. Our GitHub repositories include example projects for various frameworks. You also get access to dedicated support channels, regular webinars, and a responsive technical support team to help with implementation.

Why choose a PDF SDK over a third-party general document solution?

A dedicated PDF SDK gives you complete control over the user experience, data security, and feature set. Unlike third-party viewers, you own the implementation, avoid vendor lock-in, and can customize every aspect. PDF SDKs also eliminate external dependencies, reduce latency, and ensure your sensitive documents never leave your infrastructure.

How do I get started with Nutrient’s PDF SDK?

Getting started is easy: Sign up for a free trial, choose your platform, and follow our getting started guides. Most developers have a working PDF viewer in less than 15 minutes. Our SDKs include npm packages, CocoaPods, Maven repositories, and NuGet packages for easy integration. No credit card is required for the trial, and we offer flexible licensing options for production use.

FREE TRIAL

Ready to get started?

PDF SDK

What is a PDF SDK?

A PDF SDK (software development kit) provides developers with tools to integrate robust PDF capabilities into their applications — like viewing, editing, signing, generating, converting, and more. Nutrient’s PDF SDK is a complete solution that works across web, mobile, and server platforms, helping you build secure, scalable, and interactive document support in your application, without relying on external tools.

  • View, edit, annotate, and sign PDFs directly in your app.
  • Generate documents from Word templates or HTML.
  • Convert between PDF and Word, Excel, PowerPoint, and PDF/A.
  • Redact, extract data, and perform advanced OCR on scanned documents.
  • Integrate seamlessly with JavaScript, .NET, Java, Node.js, iOS, Android, and more.
How to choose the right PDF SDK?

Choosing a PDF SDK comes down to flexibility, performance, and platform coverage. Consider these key questions:

  • Cross-platform support — Does it work on web, mobile (iOS/Android), and backend systems?
  • Modular architecture — Can you start with core features and expand to advanced features like OCR, redaction, or signing later?
  • Performance and rendering — How does it handle large or complex PDFs across devices?
  • Developer experience — Is the SDK well-documented, actively maintained, and easy to integrate?
  • Security and compliance — Can it run on-premises or in secure environments to meet data privacy requirements?
What are the best PDF SDKs to solve my PDF integration needs?

The best PDF SDK depends on your use case — whether it’s lightweight client-side only deployment, secure signing, or the ability to fully automate your document workflows. Nutrient’s PDF SDK has a full-featured PDF engine with AI built into it, giving you best-in-class performance, cross-platform support, and modular APIs that developers love. It’s trusted by thousands of companies —from startups, to multinational enterprises across the globe — and used by billions of end users.

What are the benefits of using Nutrient’s PDF SDK?

Nutrient’s PDF SDK is the core engine behind all types of use cases — contract management, form filling, document workflows, compliance, and more — all within your app’s native environment.

  • Unified API across platforms — Consistent, phenomenal developer experience across Web, iOS, Android, and Server.
  • Modular feature set — Start with viewing and annotations, and then scale into signing, OCR, redaction, and collaboration.
  • Faster time to market — Built-in UI components and code examples accelerate your development.
  • Secure by design — Keep documents in your environment — no risky third-party uploads.
  • Enterprise-ready — Deploy on-premises, in the cloud, or in hybrid environments with robust compliance, accessibility, and enterprise support.
How does Nutrient’s PDF SDK compare to others?

Nutrient stands out by focusing on developer-first tools with enterprise-level performance, scalability, and support. It’s ideal for engineering and product teams that need flexibility, performance, and real ROI.

  • Broader platform support — Web, mobile, desktop, and server — all from one vendor.
  • Easier to embed — Clean APIs and UI components save weeks of custom work building in-house or on top of open source.
  • Lower cost and vendor risk — Replace multiple tools from multiple vendors with a single, battle-tested, secure, unified PDF engine.
  • Vendor partner — We view our relationship with customers as a partnership, and work individually with them to help them achieve their goals.
  • Backed by developer-first support — Quickstart guides, extensive code examples, comprehensive documentation, and support from the developers building the product.