BROWSER JS · CLIENT-SIDE · WASM

Extract PDF pages to images in the browser.

Split any PDF into crisp per-page images, entirely on the device. WebAssembly does the rendering, so nothing uploads and nothing round-trips a server. Preview, edit, or re-assemble pages without a single byte leaving the browser.

Runs on WebAssembly No upload, no server round-trip Per-page images, ready to use
WHAT IT DOES

Per-page images, straight from the browser

  • ✓ Render each PDF page to a PNG or JPEG on the device
  • ✓ Runs on WebAssembly, with no upload and no server round-trip
  • ✓ Choose output scale / DPI per page for sharp thumbnails or full-res
  • ✓ Extract a single page, a range, or the whole document on demand
  • ✓ Files never leave the browser, so privacy holds by default
  • ✓ Works offline once the WASM module is cached
  • ✓ Feed pages straight into preview, edit, or re-assembly
javascript
import { DocumentTools } from "@abscode/browser";

// Runs entirely in the browser, nothing is uploaded
const tools = await DocumentTools.load();
const pages = await tools.extractPdf(file, { scale: 2, format: "png" });

pages.forEach((page) => {
  const img = new Image();
  img.src = URL.createObjectURL(page.blob);
  document.body.appendChild(img);
});
USE CASES

Common scenarios

In-browser page preview

Render a full PDF to per-page images so users can flip through every page instantly, before anything is saved or sent anywhere.

Split & reorder tools

Turn each page into a draggable card. Users split, drop, and re-sequence pages, then re-assemble a fresh PDF fully client-side.

Thumbnailing

Generate low-DPI page thumbnails for a document picker or gallery view without ever uploading the source file.

Redaction prep

Flatten sensitive pages to images so hidden text and metadata are stripped before anyone marks them up. Pair it with browser compression afterward.

Per-page OCR feeds

Slice a scanned PDF into individual page images and stream each one into your OCR pipeline, one call at a time.

Privacy-first editors

Build editors where documents never touch a server. Pair with browser conversion to re-emit edited pages as PDF.

PRICING

Priced for every team

Included in the Browser JS license. Pricing shown in your local currency.

Affordable to all

Because extraction runs on the device, there are no per-page cloud fees to rack up. One flat license covers a hobby project or a high-traffic app the same way.

See pricing →

FAQ

Common questions

Can I extract pages from a PDF entirely in the browser without uploading the file?
Yes. Each PDF page is rendered to an image by a WebAssembly engine that runs on the device, so the source file never leaves the browser and there is no server round-trip. Documents stay private by default, and extraction keeps working offline once the module is cached.
What image formats can each PDF page be extracted to?
Each page is written out as a separate image, such as PNG or JPEG, giving you one file per page. Multi-page PDFs are handled the same way regardless of length, so a long document becomes a clean, ordered sequence of per-page images.
How can I get a PDF's page count and page details before extracting?
The library can report the total page count up front and return per-page details such as width, height, color type, and DPI before any page is rendered. That lets you build a page picker or size thumbnails correctly without decoding the whole file first.
Can I control the resolution of the extracted page images?
Yes. You can set the output DPI so a page renders as a light preview thumbnail or a full-resolution image. Higher DPI gives sharper output for OCR or print, while lower DPI keeps a gallery or document picker fast.
Can it output grayscale or black-and-white page images?
Yes. A filter setting renders pages in full color, grayscale, or black-and-white (bitonal). Bitonal pages are useful for scanned text headed to OCR or archival, where color adds file size without adding information.
Will extracting a large multi-page PDF freeze the page?
No. Pages can be streamed out one at a time as each is rendered, so a viewer can show the first page immediately instead of waiting for the entire document. A separate worker-pool build runs the same work off the main thread to keep the interface responsive on large files.
How does the library handle a page that fails to render?
No method throws. Every call resolves a result object carrying STATUS, DESCRIPTION, and DATA fields, so a failed page is handled with a status check rather than a try/catch. That makes batch extraction across a long document predictable.
Is in-browser PDF extraction free to try, and how is it licensed?
Extraction is included in the Browser JS license, a single flat license rather than per-page cloud fees, because the work runs on the device. An unlicensed build is fully functional for evaluation and its output images carry a watermark band until a license key is added. See pricing or the Browser JS tools to get started.
THE FULL TOOLKIT

Explore the rest of the Browser JS Library

One license, every capability — take this and you also get all of these.

Extract PDF pages in the browser

Free signup credit. No card required.