@pdfloom/sdk
v0.1.0
Published
PDFLoom's PDF engine as a library: organize, edit, redact, sign (RSA/ECDSA, timestamps, incremental), encrypt (AES-256), convert and more. Runs in the browser and in Node 20+, with no server.
Readme
@pdfloom/sdk
PDFLoom's PDF engine as a library. It runs in the browser and in Node 20+, on the bytes you give it. There is no server, no upload and no account.
import { organize, protect, sign } from "@pdfloom/sdk";
const merged = await organize.mergeDocuments([fileA, fileB]); // Uint8Array in, Uint8Array out
const locked = await protect.encryptDocument(merged, { userPassword: "secret" }); // AES-256 by default
const identity = await sign.createSigningIdentity({ commonName: "Pat Example" });
const signed = await sign.signPdfDigitally(locked_or_plain, { identity }); // appended, earlier signatures survive
const report = await sign.inspectDigitalSignatures(signed);What is in it
| Namespace | Does |
|---|---|
| organize | merge, split, reorder, rotate, delete, crop, resize, n-up |
| annotate, stamps, forms, detectFields | annotations, watermarks and page numbers, form fields, "make fillable" |
| edit, textRemoval, redact | replace content, remove text from the page content for real, flatten-based redaction |
| protect, sanitize | AES-256 / AES-128 passwords and permissions, unlock, metadata clean-up |
| sign | certificate signatures (RSA and ECDSA, .p12 import including legacy 3DES/RC2 files), incremental signing, RFC 3161 timestamps, signature inspection |
| convert, compress, optimizeImages, createDocument | images to PDF, size reduction that keeps text, building documents from blocks |
| outline, portfolio, accessibility | bookmarks, attachments, alt text |
| scan | find a page in a photo, straighten it, remove shadows (pixel arrays in, pixel arrays out) |
Page ranges are 1-based; page indices are 0-based, as in the function docs.
Trusted timestamps need a time-stamp relay URL (timestampUrl): browsers cannot reach time-stamping authorities
directly. PDFLoom's own relay is https://pdfloom-api-tegminestar.azurewebsites.net/api/timestamp, which is intended
for PDFLoom's own app; run your own (a 100-line proxy; see apps/api/src/routes/timestamp.ts) for production use.
Rendering, OCR, AI and the Office/HTML exports depend on pdf.js, workers or the DOM and live in the PDFLoom app, not here.
Build and test
pnpm --filter @pdfloom/sdk build
pnpm --filter @pdfloom/sdk testPublishing (needs your npm account; free)
- Create the
pdfloomorganization on npmjs.com (free for public packages), or change the package name inpackage.json. - Decide the licence and set
licenseinpackage.json(it isUNLICENSEDuntil you choose, which blocks reuse). npm login, then frompackages/sdk:npm publish --access public.
