Most PDF-to-PNG converters upload your file, queue it, watermark the output, or cap the resolution behind an account. This one runs in the browser tab you already have open, at the page's native size, and hands you an editor on the way out.
Full resolution, no account
The PNG comes out at the design's own pixel dimensions, read from the PDF page box. A press-ready A4 page at 300 DPI exports as a 2480 × 3508 image. Nothing is downsampled and nothing is stamped on it.
Fix the page before you export it
This is the part a plain converter can't do. As soon as the PDF parses, the design opens in the embedded Polotno editor with text still selectable and images still separate objects. Correct a typo, drop a logo, recolour the background, remove the pages you don't want — then export. The PNG is rendered from what you're looking at.
It also means transparency is under your control. Delete the white background rectangle most PDFs carry and the exported PNG has a genuine alpha channel.
Vector in, raster out
The parse step uses @polotno/pdf-import, built on Mozilla's pdf.js, so text arrives as text and shapes as paths rather than as one pre-flattened bitmap. The rasterisation to PNG happens last, at export time, from live vector data — which is why edges stay clean instead of picking up the softness of a re-encoded screenshot.
The same conversion in code
The SDK exposes the same primitives this page is built on:
import { pdfToJson } from "@polotno/pdf-import";
import { createStore } from "polotno/model/store";
const buffer = await file.arrayBuffer();
const json = await pdfToJson({ pdf: buffer });
const store = createStore({ key: "YOUR_KEY" });
store.loadJSON(json);
await store.waitLoading();
// Trigger a browser download
await store.saveAsImage({ fileName: "page.png" });
// Or get the bytes as a data URL, one page at a time
const dataUrl = await store.toDataURL({
pageId: store.pages[0].id,
pixelRatio: 2,
});Full API reference: PDF Import and the Import & Export overview.
