Polotno

File converter

Image to PDF converter

Convert JPG, PNG, WebP, or SVG to PDF in your browser. The page is sized to the image, so nothing is letterboxed or resampled. Edit before exporting.

Quick answer

Drop a JPG, PNG, WebP, or SVG and get a PDF page sized to the image — no letterboxing, no upload, no watermark.

Formula: Image → Polotno JSON (page = image size) → PDF (browser-only)

Drop a Image file here to convert it to PDF

or

Runs entirely in your browser. Your file never leaves your device.

Turn a photo, screenshot, or logo into a PDF without handing the file to a server. The page is built at the image's own size, so nothing is letterboxed onto A4 and nothing is resampled on the way out.

The page is sized to the image

Most converters drop your image onto a fixed A4 or Letter page and centre it, which leaves white bars on two sides and shrinks the content. This one creates the page at the image's own pixel dimensions instead. A 1920×1080 screenshot becomes a 1920×1080 page with the image filling it edge to edge.

If you do want a standard paper size, convert first and then change the page size in the editor before downloading.

Nothing is uploaded

The file is read locally with FileReader and embedded as a data: URL. People convert signed documents, IDs, and receipts, so the file never being transmitted is the point. You can confirm it with the network tab open.

Raster stays raster, vector stays vector

A JPG, PNG, or WebP is a grid of pixels and remains one inside the PDF. An SVG is vector artwork and is kept as paths, so it stays sharp at any zoom. That distinction matters if you are producing a logo sheet rather than a photo.

The same conversion in code

image-to-pdf.ts
import { createStore } from "polotno/model/store";
import { jsonToPDFBlob } from "@polotno/pdf-export/browser";

const store = createStore({ key: "YOUR_KEY" });

store.setSize(width, height);
store.activePage.addElement({
  type: "image",
  src: dataUrl,
  x: 0,
  y: 0,
  width,
  height,
});

await store.waitLoading();
const blob = await jsonToPDFBlob(store.toJSON());

jsonToPDFBlob is the vector export path and keeps SVG artwork as paths. The built-in store.saveAsPDF() is the raster path, which flattens the page to an image. Full reference in PDF export, and the API version in PDF generation.

Frequently asked questions

Q: How do I convert an image to PDF?

Drop a JPG, PNG, WebP, or SVG on the converter above. The image is read in your browser and opens as a one-page design sized to the image itself. Click Download to get the PDF. No account, no upload, no watermark.

Q: Does my image get uploaded?

No. The file is read with FileReader and rendered locally. It never leaves your machine, which matters when the image is a signed document, an ID, or a receipt.

Q: Will the image be cropped or letterboxed?

No. The PDF page is created at the image's own dimensions rather than forced onto A4 or Letter, so there are no white bars and no crop. If you want a standard paper size, change the page size in the editor before exporting.

Q: Is there a size limit?

Images are capped at 4000px on the longest edge and scaled proportionally past that. PDF page boxes are measured in points, and a page several thousand points across produces a document many viewers refuse to open. Below that cap nothing is resampled.

Q: Can I put several images in one PDF?

This tool handles one image per document. For a multi-page file, add pages in the editor after converting, or use the merge PDF tool to combine separate exports.

Q: Is the output vector or raster?

A JPG, PNG, or WebP is a raster image and stays raster inside the PDF. An SVG is vector artwork and is preserved as vector paths, so it scales without softening.

Want this in your app? Embed Polotno SDK.

TRUSTED BY

100,000+

CREATORS

300+

BUSINESSES

ExpediaUnbounceLovePopPostGridPredis.ai