Skip to content

PDF signing SDK for your React app

Build a PDF signing workflow in your own React UI with a browser-based PDF signing component. Create signature fields, place an electronic signature, collect signer details, and save the signed PDF.

  • Battle-tested in
  • 500k+ users daily
  • 12m+ docs rendered
Your turn to sign?Contract.pdf · 2 pages · 1 of 2 signed

Works with vanilla JavaScript and most popular frameworks

Building blocks for a React PDF signing experience

PDFSDK handles PDF rendering and document state. Your application owns signature capture, identity, and the PDF signing workflow.

Create signature fields

Add standard AcroForm signature fields to an existing PDF from code, or arm the addWidget tool with editable forms and let a document builder place them on the page.

  • useWidgetsCreate()
  • addWidget tool

Bring your own signature UI

Build your own PDF signature component: capture a drawn signature on a canvas, render a typed signature, or accept an uploaded image. Pass the resulting Blob to the SDK instead of adopting a vendor signing modal.

  • stageImage()

Place a visible e-signature

Arm the addImage tool with the staged signature. The signer’s next click places it on the PDF as an image-backed Stamp annotation, a separate annotation over the field rather than a value written into it.

  • stageImage()
  • useSetInteractionMode()

Adjust the signature on the page

Select, move, resize, duplicate, or delete the placed signature with the same interactions you’d use in a React PDF editor.

  • useMoveSelection()
  • useDuplicateSelection()
  • useDeleteSelection()

Fill the rest of the agreement

Keep names, dates, approvals, checkboxes, and dropdowns in real AcroForm fields, so values stay structured form data when the PDF is saved.

  • useWidgets()
  • useWidgetValue()

Read the signature state of a field

For existing certificate-signed fields, isCryptoSigned mirrors the loaded document. It tells you the field was signed, not whether the certificate is valid, and the SDK never signs.

  • useWidgetsGetter()
  • isCryptoSigned

Lock the document around the signer

Page text stays read-only, and form fields stay interactive while the signature image is placed. Switching the content policy at runtime moves the same document between builder and signer roles. Placing an image needs editable annotations, and that permission covers every annotation in the document.

  • CONTENT_POLICY_PRESET
  • useSetInteractionMode()

Save a signed PDF

Serialize the signature field, form values, and visible signature into PDF bytes in the browser. Then download the file or send it through your own storage or signing pipeline.

  • useDocumentSaving()

From an unsigned PDF to your PDF signing workflow

PDF SDK for React supplies the PDF engine, fields, placement tools, and save path. Your React components supply the capture UI and the signing workflow around it.

Working with forms →

Load the PDF in a signer-safe policy

Start from the PDF_VIEWER preset: page text stays read-only and form fields stay interactive. Add editable annotations, which the addImage tool needs to place the signature image. That permission is document-wide, not scoped to the signature.

import { useEffect } from 'react';
import {
  CONTENT_POLICY_PRESET,
  PdfProviders,
  Viewport,
  useLoadPdf,
} from '@sdk-pdf/react';
import '@sdk-pdf/react/style.css';

const signingPolicy = {
  ...CONTENT_POLICY_PRESET.PDF_VIEWER,
  annotations: 'editable',
} as const;
const selectTool = { type: 'select' } as const;

type Props = { file: Uint8Array };

function Signer({ file }: Props) {
  const [state, loadPdf] = useLoadPdf();

  useEffect(() => {
    void loadPdf(file);
  }, [file, loadPdf]);

  if (state.status !== 'ready') return null;
  return (
    <div style={{ height: '100vh' }}>
      <Viewport />
    </div>
  );
}

export function App({ file }: Props) {
  return (
    <PdfProviders
      initialInteractionTool={selectTool}
      initialContentPolicy={signingPolicy}
    >
      <Signer file={file} />
    </PdfProviders>
  );
}

Check PDF signature status, then hand off the file

A signature field’s isCryptoSigned mirrors the loaded document, and the SDK never signs. prepareDocument returns the PDF bytes for your certificate-signing endpoint.

stageImage reference
signature-state.ts
import { useWidgetsGetter } from '@sdk-pdf/react';

export function useSignatureStates() {
  const getWidgets = useWidgetsGetter();

  return async () => {
    const widgets = await getWidgets();
    return widgets.flatMap((widget) =>
      widget.widgetType === 'signature'
        ? { fieldName: widget.fieldName, isCryptoSigned: widget.isCryptoSigned }
        : [],
    );
  };
}

A browser-native PDF signing library for React

React PDF signing runs entirely in the tab: PDF parsing, rendering, field creation, signature placement, and saving. Identity, audit evidence, and private-key operations stay in the systems you choose.

page.tsx
'use client';
import dynamic from 'next/dynamic';

const Signer = dynamic(() => import('./signer'), { ssr: false });

export default function Page() {
  return <Signer />;
}
Framework
React 19, with react and react-dom as peer dependencies
Module format
ESM only; use a bundler such as Vite or Next.js
Runtime
Browser only; use a client component with ssr: false in Next.js
Bundle
277 KB gzipped; CJK character maps are code-split and lazy
Assets to host
None. No worker directory, WASM, or font bundle
Signature capture
Bring a canvas, typed-signature renderer, or upload control that produces an image Blob
Cryptographic signing
Not included. Connect your certificate or remote-signing service
Strict Mode
Off for now. The simulated unmount kills the engine
Encrypted files
Pass { password } to loadPdf. RC4, AES-128, and AES-256
File format
PDF only

PDFSDK vs other PDF signing libraries

Some PDF signing libraries capture a signature, some modify PDF bytes, and some apply a certificate. PDFSDK covers the interactive React PDF viewer and the visible e-signature flow.

LibraryVisible e-signatureSignature fieldsCertificate signingPDF viewerRuntime
Image in your UICreate and readNoIncludedBrowser, React
Signature PadCaptures handwritingNoNoNoBrowser
pdf-libDraw image manuallyNo signing workflowNoNoBrowser or Node.js
@signpdfNo signing UIPlaceholder helpersP12 signingNoNode.js

Build the rest of the document workflow

PDF Forms SDK

Create and fill the names, dates, approvals, and checkboxes that surround a signature.

Explore PDF forms

React PDF Viewer

Embed the document, navigation, and form experience inside your own React layout.

Explore the viewer

React PDF Editor

Prepare the agreement, update its text, and place fields before it reaches the signer.

Explore PDF editing

Questions engineers ask

PDFSDK supports visible electronic signatures: your application captures or creates a signature image, and the SDK places it on the PDF and saves it into the file. It also creates and reads standard PDF signature fields. It does not currently create certificate-based digital signatures.

Still have questions? Book 30 minutes

A short call with the engineering team and a straight answer instead of a pitch

Book a call