Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Gotenberg is the most direct open-source HTTP option for HTML-to-PDF conversion: run its Docker container and send HTML or a URL to its Chromium routes. If you need browser lifecycle and page interaction inside your application, use Playwright or Puppeteer and call the page PDF method. The right choice depends on whether you want a standalone conversion service or browser control embedded in your code.
Choose the integration shape first
These tools solve the same rendering problem at different architectural layers. Gotenberg is a containerized service with HTTP endpoints. Your application submits a URL or multipart HTML document and receives a PDF. Playwright and Puppeteer are browser-automation libraries: your process starts or connects to Chromium, navigates a page, waits for application readiness, and calls the browser’s PDF method.
| Approach | Input model | Operational responsibility | Best fit |
|---|---|---|---|
| Gotenberg | URL or uploaded HTML and assets over HTTP | Operate a separate container, capacity and network controls | A shared conversion service used by several applications |
| Playwright | A page your application controls | Manage browser lifecycle, contexts, concurrency and errors in application code | Flows needing interaction, custom waits or multiple browser APIs |
| Puppeteer | A page controlled through its Node.js API | Manage Chromium and page lifecycle in the Node process | Node.js services already standardized on Puppeteer |
There is no measured performance or quality ranking between these choices here. Rendering fidelity, throughput, memory use and failure behavior vary with Chromium versions, templates and deployment settings, so benchmark representative documents in your own environment.
Run Gotenberg as a self-hosted API
Start a local container
Gotenberg’s documented example uses the gotenberg/gotenberg:8 image. Treat the 8 tag as the documented example, not as a statement that it is the newest release; pin and verify the release you deploy.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- Scanner type: Document
- Connectivity technology: USB
- With Auto Scan Mode, the scanner automatically detects what you're scanning
- Digitize documents and images
docker run --rm -p 3000:3000 gotenberg/gotenberg:8
The Chromium module exposes conversion routes. A URL conversion posts to /forms/chromium/convert/url and returns the generated PDF:
curl --request POST
--url http://localhost:3000/forms/chromium/convert/url
--form url=https://example.com
--output example.pdf
Use a URL only when the converter is allowed to reach that site and its assets. For production, review outbound filtering, allowed destinations, credentials and isolation before exposing this route to users.
Convert an HTML file and its assets
For generated or static documents, submit the required index.html file to /forms/chromium/convert/html. Relative CSS, fonts and images can be referenced from the uploaded document and included assets.
curl --request POST
--url http://localhost:3000/forms/chromium/convert/html
--form [email protected]
--form [email protected]
--form [email protected]
--output invoice.pdf
Keep asset paths relative and verify that every referenced file is included in the multipart request. A missing font or image often looks like a layout defect rather than an upload error.
Make pagination intentional
PDF output is controlled by print settings, not just the HTML. Define page dimensions and margins in CSS where possible:
Rank #2
- FAST SPEEDS - Scans color and black and white documents a blazing speed up to 16ppm (1). Color scanning won’t slow you down as the color scan speed is the same as the black and white scan speed.
- ULTRA COMPACT – At less than 1 foot in length and only about 1. 5lbs in weight you can fit this device virtually anywhere (a bag, a purse, even a pocket).
- READY WHENEVER YOU ARE – The DS-640 mobile scanner is powered via an included micro USB 3. 0 cable allowing you to use it even where there is no outlet available. Plug it into you PC or laptop and you are ready to scan.
- WORKS YOUR WAY – Use the Brother free iPrint&Scan desktop app for scanning to multiple “Scan-to” destinations like PC, Network, cloud services, Email and OCR. (2) Supports Windows, Mac and Linux and TWAIN/WIA for PC/ICA for Mac/SANE drivers. (3)
- OPTIMIZE IMAGES AND TEXT – Automatic color detection/adjustment, image rotation (PC only), bleed through prevention/background removal, text enhancement, color drop to enhance scans. Software suite includes document management and OCR software. (4)
@page {
size: A4;
margin: 16mm 14mm 18mm;
}
@media print {
.screen-only { display: none; }
.avoid-break { break-inside: avoid; }
}
Validate page size, margins, portrait or landscape orientation, background printing, CSS @page rules, page breaks and long tables with real documents. Browser and Gotenberg options can also set paper size, margins, orientation, background behavior and page ranges; check the route documentation for the exact form names and defaults of the version you deploy.
Wait for client-rendered pages
A URL may return HTML before JavaScript has populated the page. Gotenberg documents readiness controls, including waiting for an expression or selector. Prefer a condition that represents your application being ready, such as a report container appearing, over an arbitrary sleep. A fixed delay is less precise: it can waste time on fast requests and still be too short on slow ones.
For repeatable output, ensure fonts, images and data requests have completed before conversion. Record the deployed Gotenberg and Chromium versions because browser behavior can change between releases.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteGenerate PDFs directly with Playwright
Playwright’s Page.pdf() returns a PDF buffer. It uses print CSS media by default. If the design is written for the screen, explicitly select screen media before generating the file; otherwise, use print styles deliberately.
import { chromium } from 'playwright';
import { writeFile } from 'node:fs/promises';
const browser = await chromium.launch();
try {
const page = await browser.newPage({ viewport: { width: 1280, height: 900 } });
await page.goto('https://example.com/report', { waitUntil: 'networkidle' });
await page.locator('[data-report-ready="true"]').waitFor();
// Keep this line only when the page should use screen CSS.
// await page.emulateMedia({ media: 'screen' });
const pdf = await page.pdf({
format: 'A4',
printBackground: true,
preferCSSPageSize: true,
margin: { top: '16mm', right: '14mm', bottom: '18mm', left: '14mm' },
tagged: true
});
await writeFile('report.pdf', pdf);
} finally {
await browser.close();
}
Important Playwright options
- Media: print is the default; call
emulateMedia({ media: 'screen' })when screen rules are required. - Paper and pagination: choose a format or explicit width and height, set margins, and use
pageRangesfor selected pages. - CSS page size:
preferCSSPageSize: truegives your@pagerule priority. - Appearance:
printBackground: truepreserves backgrounds; scale changes the rendered size. - Accessibility: tagged output is available in versions that support the
taggedoption; verify the generated PDF with your accessibility tooling.
Use an application-specific selector or state marker for readiness. networkidle alone is not proof that a chart, web font or delayed API response is complete.
Rank #3
- Up to 255 customize favorite scan file setting with "Single Touch" , Support Windows 7/8/10
- Turn paper documents into searchable, editable files - save scans as searchable PDF files; OCR function included
- Info Barcode function - automatic categorization of complicate documentation and data with 1D or 2D Barcode page.
- Intelligent color and image adjustments — Auto Rotate, Crop, Deskew and blank page remove with Plustek Image Processing Technology
- Easy send scanned files to FTP server or personal NAS (FTP) with PDFs , Jpeg , TIFF or Png format. User can download scanner driver from Plustek website
Generate PDFs with Puppeteer
Puppeteer’s page-to-PDF method follows the same browser model. Its API documents emulating screen media before page.pdf() when screen styling is desired.
const puppeteer = require('puppeteer');
const fs = require('node:fs/promises');
(async () => {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.goto('https://example.com/report', { waitUntil: 'networkidle0' });
await page.waitForSelector('[data-report-ready="true"]');
// Use screen rules instead of print rules when that is your design intent.
// await page.emulateMediaType('screen');
await page.pdf({
path: 'report.pdf',
format: 'A4',
printBackground: true,
preferCSSPageSize: true,
margin: { top: '16mm', right: '14mm', bottom: '18mm', left: '14mm' }
});
} finally {
await browser.close();
}
})();
Do not assume Playwright and Puppeteer defaults are interchangeable. Pin the library and browser versions, then inspect output after upgrades.
Rendering controls that determine the result
Print versus screen CSS
Print media can hide navigation, change colors and alter layout. Screen media may preserve a responsive dashboard but produce awkward page breaks. Decide which medium is authoritative and test it explicitly.
Fonts, images and backgrounds
Package or install fonts where the renderer can access them, wait for web fonts and images, and enable background printing when color panels or charts require it. A PDF can be technically successful while still missing visual assets.
Long content and tables
Use page-break rules, repeat table headers where supported by your markup and test unusually long rows. Avoid relying on a single screenshot-sized fixture; pagination failures usually appear only with realistic data.
Rank #4
- Note: No software installation is required. You need 2 AA batteries ( not included) and a memory card ( included) to use it directly. Scan mode: Press and hold "Scan" for 2 seconds to turn on the device, and then press "Scan", the green light is on. The scanner moves to scan the file until the green light turns off automatically (or press the "Scan" key and the green light goes out). The number shown on the display increases by 1 to indicate that the scan is complete.
- Portable Scanner scans images or pictures quickly: Store JPEG/PDF files within seconds, scan images or pictures quickly, plug and play, no need any software preinstalled. Compatible with Windows XP/7/Vista/Mac OS 10.4 or above version.
- Lightweight and travel-friendly: Stored in Micro SD card directly, support read data on your computer or phone with USB connected. Powered by 2pcs AA batteries, Compact Design, it is convenient to carry outside.
- 3 Image Resolution: 3 modes of resolution for your options: 300dpi/600dpi/900dpi, you can save it at the clearest way, picture and document are showed clear as it is. Freely choose your favorite resolution.File Format: JPEG/PDF format is all available, Great storage capacity as it supports 32G Micro SD card(Included 16GB Card),total meet your need for business trip or daily use.
- Widely Used: It is applicable in bank, insurance business, real estate agency,home, office, library or outdoors. suitable for lawyer, businessmen, students, travelers and amateur archivists. Scan your important files and save them immediately, no struggling in finding a printing shop, keep it confidential.
URLs, cookies and headers
Authenticated pages require a deliberate credential strategy. Review which cookies, authorization headers and external resources a job can access. Never allow arbitrary user-supplied URLs to turn your renderer into an unrestricted server-side request proxy.
Security and isolation checklist
- Restrict outbound destinations and resource types for URL conversion.
- Separate jobs and clear cookies between requests when documents may contain sensitive data.
- Use a dedicated network boundary for the browser or Gotenberg container.
- Set timeouts and maximum document sizes; terminate stuck browser processes.
- Do not place secrets in URLs, HTML, logs or generated filenames.
- Review Gotenberg’s outbound filtering and cookie-clearing configuration for the exact deployment. These controls are configuration-dependent and should be validated in your environment.
Gotenberg’s project page indicates an MIT license at repository level. Check the current license file and dependencies for the exact release you deploy.
Capacity, reliability and cost planning
A containerized service is not “zero operations”: plan CPU, memory, concurrency, queueing, health checks, logging and upgrades. Browser automation places those same concerns inside your application process. Measure render duration, peak memory, failure rate and simultaneous jobs with your templates instead of adopting an unverified benchmark.
- Queue work: cap concurrent Chromium pages and apply back-pressure rather than starting an unlimited browser per request.
- Reuse carefully: browser reuse saves startup time, but isolate contexts and clear state between customers.
- Retry selectively: retry transient navigation or network failures, not deterministic HTML or authentication errors.
- Make jobs observable: log template version, renderer version, wait condition, duration and failure category without logging document secrets.
- Pin releases: verify the image, browser and library versions in each environment and compare PDFs after upgrades.
Or skip the browser setup
ScreenshotNeo is a hosted website screenshot API that can also return PDFs when you need a simple HTTP call instead of operating Chromium. It accepts a URL and handles the capture workflow:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for PDF parameters, CSS and JavaScript controls, waits, headers, cookies, user agents, geolocation, caching, asynchronous jobs and bulk requests. Before capture it accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be turned off. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers report the page verdict and billing status. An MCP server provides take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Troubleshooting common failures
Blank or partially rendered PDF
Cause: conversion started before client-side rendering or assets completed. Fix: wait for a specific ready selector or expression, ensure the API data request has completed, and verify font and image URLs from inside the renderer.
Best Value
- PORTABLE SCANNER FOR USE ON-THE-GO — The fastest and lightest mobile single-sheet-fed compact document scanner in its class¹
- QUICK DOCUMENT SCANNING ― This Epson ultra-fast scanner scans a single page as quickly as 5.5 seconds²; Windows and Mac compatible
- VERSATILE PAPER HANDLING ― Portable scanner scans documents up to 8.5 x 72 in; Also easily digitizes receipts and ID cards to make accounting, bookkeeping, and organizing simpler
- INTUITIVE, HIGH-SPEED SOFTWARE — Epson ScanSmart Software³ is a smart tool allowing you to easily scan, review, and save; Stay organized easily with the help of this Epson scanner
- EASY SETUP — USB-powered connect to your computer for quick and simple scanning; No batteries or external power supply required to operate portable document scanner; Standard Connectivity: USB 2.0
Styles look wrong
Cause: print media is active, CSS page size is ignored, or a stylesheet is inaccessible. Fix: choose print or screen media explicitly, set @page and the corresponding PDF option, and inspect network access and relative asset paths.
Missing backgrounds
Cause: background printing is disabled. Fix: enable printBackground in Playwright or Puppeteer and the equivalent Gotenberg option, then check that CSS actually defines the background.
Images or fonts are absent
Cause: files were not uploaded, relative paths are incorrect, or external requests are blocked. Fix: include every HTML route asset in Gotenberg’s multipart request, use resolvable URLs, and wait for fonts and images before PDF generation.
Timeouts and hung jobs
Cause: a page waits forever on a request, selector or script. Fix: set navigation and job timeouts, use a bounded readiness condition, abort or recycle stuck pages, and record the failing URL and stage.
Unexpected access to private resources
Cause: unrestricted URL conversion or inherited cookies and headers. Fix: apply outbound URL filtering, isolate jobs, clear cookies between requests and allow only the hosts and credentials required by the application.
Decision guide
- Choose Gotenberg when multiple services need one HTTP conversion endpoint and your team is prepared to operate a container and its security boundary.
- Choose Playwright when the PDF is one step in a larger browser workflow or you need rich page interaction in application code.
- Choose Puppeteer when your Node.js stack already uses its API and you want direct Chromium control.
- Use a hosted endpoint such as ScreenshotNeo when you want to avoid browser infrastructure and need URL capture, cleanup, billing visibility and an MCP path for AI agents.
Frequently Asked Questions
Can Gotenberg convert a local HTML file with images and CSS?
Yes. Post multipart form data to /forms/chromium/convert/html with a required index.html file and include referenced assets using relative paths.
Which renderer should I use for JavaScript-heavy pages?
All three approaches use Chromium, but readiness is the deciding factor. Wait for an application-specific selector or expression before generating the PDF, and validate the result with representative pages.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesIs the documented Gotenberg :8 image the latest version?
The documented example uses gotenberg/gotenberg:8; that does not establish it as the latest release. Pin and verify the version you deploy.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




