What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use window.print() when a person should choose a printer or Save as PDF. Use a headless browser or hosted screenshot API when a server must create a file without opening a browser window. Print output follows paginated print rules; screenshots reproduce the rendered pixels. Choosing the wrong method is the main cause of clipped layouts, missing JavaScript content, and unusable PDFs.

Choose the output before choosing the code

Approach Best for Output and control Main trade-off
window.print() A person printing or saving a page Browser print dialog, print CSS, and printer settings Requires user interaction and browser UI
Print CSS Readable paper or PDF layout @media print, @page, page-break rules Needs deliberate layout and visibility rules
Puppeteer page.pdf() Unattended server-side PDFs Chromium rendering with print media by default You operate browser infrastructure
Puppeteer page.screenshot() Pixel or image capture PNG, JPEG, or WebP-style raster output Image appearance is not paginated paper semantics
Playwright PDF or screenshot Cross-browser automation PDF, screenshots, and stylesheet injection Requires an automation runtime and deployment setup
Hosted screenshot API Teams that do not want to run browsers Vendor-managed rendering endpoint Provider limits, pricing, and terms must be checked

Print a page interactively with JavaScript

The simplest implementation calls window.print(). The browser opens its print dialog; if the document is still loading, the browser finishes loading before printing and the call remains blocked while the dialog is open.

Minimal button

<button type="button" onclick="window.print()">Print this page</button>

Prefer an event listener when your project uses modules or a framework:

<button id="print-page" type="button">Print</button>
<script>
  document.querySelector('#print-page').addEventListener('click', () => {
    window.print();
  });
</script>

Wait for JavaScript-rendered content

Do not print immediately after starting an asynchronous fetch or component render. Render the content first, then enable the button or call the method from the completion path.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
Canon PIXMA TR160 Color Wireless Portable Printer
  • LIGHTWEIGHT AND PORTABLE - Connect and print on the go with the PIXMA TR160. This lightweight portable printer can fit into a bag or backpack with room to spare.
  • HIGH-QUALITY PRINTING ON THE GO - Print documents and photos up to 8.5” x 11” that showcase sharp black text and vibrant details with rich color thanks to a 5-Color Hybrid Ink System, including square and borderless prints.
  • SIMPLE & EASY CONNECTIVITY - Printing is only an app away when using the Canon PRINT app, Apple AirPrint4, or Mopria Print Service5 with your compatible device(s) or the cloud.
  • WIRELESS DIRECT MODE - Connect your compatible device to the printer even without a wireless router.
  • 1.44” OLED DISPLAY - Easily check ink levels, printer status, and other settings with the 1.44” Monochrome OLED.
async function prepareAndPrint() {
  const response = await fetch('/api/article');
  const article = await response.text();
  document.querySelector('#article').innerHTML = article;
  document.fonts?.ready.then(() => window.print());
}

For user-triggered printing, keep the click handler and use a ready state rather than firing during initial page load. This avoids incomplete lists, charts, images, or fonts.

Control paper and PDF layout with print CSS

The print media type is applied only to printed output. Put rules in a dedicated stylesheet with media="print", or use an @media print block.

<link rel="stylesheet" href="print.css" media="print">

@media print {
  nav, .screen-only, .chat-widget, .cookie-banner {
    display: none !important;
  }
  a { color: #000; text-decoration: none; }
  .page-break { break-before: page; }
}

@page {
  size: A4;
  margin: 16mm;
}

Keep screen and print elements explicit

Use classes such as screen-only and print-only rather than broad selectors that might hide article content. Add print-only URLs or notes when readers need context that a screen control does not provide.

Handle temporary UI changes

The browser exposes beforeprint and afterprint. They are useful for pausing an animation, expanding a collapsed section, or restoring the interface after the dialog closes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
window.addEventListener('beforeprint', () => {
  document.querySelectorAll('details').forEach(el => el.open = true);
});
window.addEventListener('afterprint', () => {
  document.querySelectorAll('details').forEach(el => el.open = false);
});

Test page breaks, long tables, background colors, links, and images in the browsers your readers use. Printer settings can override margins, scale, headers, footers, and background graphics.

Rank #2
NDYIN Portable Printers Wireless for Travel, N80 Bluetooth Thermal Printer
  • Wireless Bluetooth Printer: Portable thermal printer compatible with iPhone, Android phones, iPad and tablet computers via Bluetooth. For smartphones, please download the "Nada Print" App. You can also connect to laptops and computers for printing using a USB-C cable. (Note: Laptops and computers can only be connected via USB and require the installation of a driver first. Bluetooth connection is not supported.)
  • No-ink printing: Only supports US Letter and A4 size thermal paper.(Doesn't support regular paper) The no-ink portable thermal printer uses direct thermal technology, requiring no ink, toner or ribbons, making it environmentally friendly, cost-effective and time-saving. The thermal printer package comes with a roll of US Letter thermal printing paper. Note: When installing the paper, remember to switch the paper size switch on APP
  • Clear Print: NDYIN N80 portable thermal printer adopts high-definition printing technology, with a 203DPI resolution to provide you with clear printing results. This mobile printer is compatible with roll paper, folded paper and tattoo transfer paper, supporting printing from your mobile phone PDF, Word, pictures and web pages anytime and anywhere. It is recommended to use our NDYIN thermal paper to achieve good printing quality
  • Portable wireless printer for travel: The thermal printer is equipped with a built-in 1500mAh rechargeable battery, which can print 160 sheets of 8.5" x 11" thermal paper after being fully charged. It weighs only 1.5 pounds and is compact in size. This ink-free portable printer can be easily carried in a backpack or briefcase! It is perfect for business travel, cars, small offices, construction sites, schools and homes. You can print documents, contracts, invoices and boarding passes anytime and anywhere
  • The N80 thermal printer has a wide range of uses. The package includes the N80 printer, a roll of US Letter paper(7m/roll), a user manual, a guide card, a type-C soft cable and a type C adapter. Note: The charging adapter is not included. Special thermal paper is required for use; ordinary paper cannot be used. This ink-free portable thermal printer is suitable for various scenarios such as home, school, travel, office, and outdoor, meeting the printing needs of different groups of people. This tattoo template printer is also compatible with tattoo transfer paper, making it an ideal choice for tattoo art

Save a webpage as a PDF without user interaction

For a server job, run a headless browser. Puppeteer’s page.pdf() uses print CSS by default. To generate a PDF using screen styles instead, call page.emulateMediaType('screen') first.

Puppeteer PDF example

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();
  await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 1 });
  await page.goto('https://example.com', { waitUntil: 'networkidle0' });
  await page.pdf({
    path: 'page.pdf',
    format: 'A4',
    printBackground: true,
    margin: { top: '16mm', right: '16mm', bottom: '16mm', left: '16mm' }
  });
} finally {
  await browser.close();
}

Use a selector wait (for example, await page.waitForSelector('#article')) when network idle does not guarantee that application JavaScript has finished. Set fonts, viewport, timezone, and authentication deliberately for repeatable output. Exact colors can require the CSS property -webkit-print-color-adjust: exact, subject to browser and printer settings.

Capture an image instead

await page.screenshot({ path: 'page.png', fullPage: true });

A screenshot can return binary data or base64 depending on the encoding option. Use PNG for lossless UI text, JPEG for photographic pages, and WebP when your downstream consumers support it. A full-page image may be extremely tall; choose a viewport capture when a fixed social-card or monitoring image is the real requirement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Playwright for PDF or screenshot automation

Playwright provides the same practical split: page.pdf() for print-media PDF output and page.screenshot() for raster capture. Its screenshot API can apply a stylesheet during capture, which helps hide dynamic elements and keep repeated captures consistent.

import { chromium } from 'playwright';

const browser = await chromium.launch();
try {
  const page = await browser.newPage({ viewport: { width: 1440, height: 900 } });
  await page.goto('https://example.com', { waitUntil: 'networkidle' });
  await page.screenshot({
    path: 'page.png',
    fullPage: true,
    style: '.cookie-banner, .chat-widget { display: none !important; }'
  });
  await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });
} finally {
  await browser.close();
}

Install and deploy the browser binaries appropriate to your Playwright version. In containers, account for sandbox permissions, available fonts, memory, and concurrent page limits.

Rank #3
Sale
ETIKEZ D90E Inkless Portable Thermal Printer with Case – 8.5" x 11", Black
  • Portable Wireless Printer - The ETIKEZ D90E is an inkless printer and portable printer that uses advanced thermal technology, requiring no ink, toner, or ribbons, delivering cost-effective prints. Weighs only 2.08lb, the portable printer is incredibly lightweight and compact. Perfect for on-the-go printing during business travels, work, or university, it easily fits into backpacks or briefcases. Ideal for emergency scenarios, contracts, office documents, and more. only prints black and white
  • Bluetooth & USB Connectivity - Connect this D90E portable printer to iPhones or Android via Bluetooth. This wireless printer also works with PC over USB. As a thermal printer, it requires the Labelnize app for mobile printing; for PC, install drivers from Labelnize.com or the USB drive. This small portable printeris not compatible with Chromebooks. (Note: For laptop and computer use, connect via USB after downloading the driver from Labelnize.com.)
  • Multiple Printing and Format – The wireless portable printer supports 8.5" x 11" US Letter thermal paper (B0GD61HPDC, B0GD5JFC2Q). It meets all your various printing requirements, whether you're on the go or in a car. (Note: This thermal printer is compatible exclusively with A4 thermal paper and does not accept ordinary copy paper)
  • Gift-Ready - This portable printer, a gift for pros & students, works as a thermal printer for classroom, classroom printer for teachers, printer for college student, small classroom printer, printer for dorm room, thermal printer for teachers, and portable printer for classroom. It combines thermal & inkless, ideal for notaries, truckers, teachers, parents. Package: D90E Printer, USB-C Cable, 10-sheet Paper, Travel Case, Guide. (Charging adapter not included.)
  • How to solve paper jams: 1) Click once to pop up the paper - If the machine gets a paper jam, simply press the power button and the machine will automatically eject the paper. 2) Do not forcefully open the machine cover as it may cause injury or scratches . 3) Choose our flat thermal paper to avoid curling of the paper after printing. Note: Cannot use regular paper for printing

When a hosted screenshot API is the better fit

Operating Chromium workers means handling browser downloads, crashes, queues, navigation timeouts, fonts, cookies, proxy policy, and scaling. A hosted endpoint is often simpler for occasional captures, scheduled jobs, CMS previews, and teams that do not want browser infrastructure.

ScreenshotNeo: the first API to try

ScreenshotNeo is a website screenshot API and MCP server. It accepts one GET request and returns PNG, JPEG, WebP, or PDF. It is first choice here because it removes cookie and consent banners, newsletter popups, and chat widgets before capture; only clean shots are billed; and its lowest paid plan is $5.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Its 63 options include full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets plus custom viewports, retina scale, PDF paper size/margins/orientation/page ranges, HTML/CSS-to-image, custom CSS and JavaScript, pre-capture clicks, hidden selectors, waits for selectors/delay/network idle, blocking ads/trackers/requests/resource types, custom headers/cookies/user agent/Authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTL, signed public-image links, asynchronous jobs with signed webhooks, bulk capture of 100 URLs per call, usage API, OpenAPI specification, and compatibility with parameter names used by other screenshot APIs.

One-call cURL capture

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 documentation for all parameters and response details. Responses identify page status through X-Page-Verdict and billing through X-Billed. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing.

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

Plans and quotas

Plan Included shots Price
Free 1,000/month $0, no card
Starter 3,000 $5
Growth 15,000 $15
Pro 60,000 $39
Scale 250,000 $99
Business 1,000,000 $249

Yearly billing gives two months free. Every feature is available on every plan.

Reliability, performance, and cost decisions

  • Readiness: wait for the specific selector or application state, not only a fixed delay. Fixed delays are slower when unnecessary and still unreliable when a page is slower than expected.
  • Determinism: fix viewport, device scale, media type, fonts, timezone, locale, cookies, and user-agent when comparing captures.
  • Resource control: block analytics, ads, videos, or unused resource types when they are not part of the required output.
  • Security: keep API keys server-side, restrict outbound destinations where possible, and treat custom headers and cookies as secrets.
  • Concurrency: queue browser jobs and cap parallel pages to avoid memory spikes; hosted bulk and asynchronous options can simplify large batches.
  • Caching: use a deliberate TTL for stable pages, but disable or shorten it for frequently changing content.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common failures

The printout is blank or missing content

The capture ran before JavaScript completed, a selector was hidden in print CSS, or a lazy image never entered the viewport. Wait for the rendered selector, expand required sections, and ensure images are loaded before printing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Rongta Thermal Portable Printers Wireless for Travel, Bluetooth Mobile Printer, Inkless Printer for School/Office/Home Use, Compatible with Android,iOS & Laptop(Black)
  • Easy to Set Up: RONGTA F11A portable thermal printer for travel go by bluetooth.Download "RONGTA" APP from Google Play or APP store for iOS and Android Phone or tablet.Connect the printer via bluetooth in the App, choose the F11A and make a Bluetooth connection in the APP, then it can easily print from your iPhone, iPad, or Android mobile, tablet.The inkless portable printer supports USB cable connection for Laptops,compatible with Windows 7-11 and MacOs for PC.
  • RONGTA portable printer, 203DPI resolution, large to 8.5" design, easy to use and maintain. Print forms, letters, assignments, study materials, and travel documents hassle-free with advanced thermal technology. Ideal for printing outdoor, meeting office, or at home.
  • Stylish Thermal Printer:Rongta bluetooth wireless printer, It is compatible with your go-to paper sizes—including US Letter, Legal, A4 thermal papers. What’s more, it requires no ribbons or ink cartridges at all. Designed for hassle-free home and travel use, it combines portability, versatility, and ultra-low operating costs in one sleek device.
  • Portable and Compact: When traveling you can take Rongta portable printer wireless in your backpack or tote bag wherever you need. It is compact and portable whether in office home or on business trips,or any outdoor occations. Print contracts,office documents,inventory lists,or study materials for school.
  • Warm Tips: Do Not Support Chrome. Rongta portable printers wireless for travel can't support pair bluetooth via Phone or tablet directly, must be pair on the"RONGTA" APP. Download APP, then turn on app make a Bluetooth connection. Please use thermal paper, do not support normal paper.

The PDF looks different from the screen

PDF generation uses print media by default. Remove or change emulateMediaType('screen') intentionally, then review @media print, @page, margins, and background-color settings.

Fonts or icons are absent

Wait for document.fonts.ready, verify the font requests are reachable from the worker, and provide a fallback font. A blocked cross-origin asset can change line wrapping and page count.

Navigation times out

Use a realistic timeout, wait for a meaningful selector when third-party requests never settle, and block nonessential trackers. Check authentication, redirects, robots or bot checks, and DNS from the execution environment.

Print controls appear in the output

Give controls a dedicated class such as screen-only and hide it under @media print. Avoid hiding a parent that contains article content.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A hosted request is not billed

For ScreenshotNeo, inspect X-Page-Verdict and X-Billed. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are intentionally non-billable.

Best Value
Sale
Gloryang Inkless Portable Printer for Travel, Wireless Thermal Printer Supports 8.5 x 11 Inch Thermal Paper, Bluetooth Machine Includes Carry Case and 3 Rolls of Paper Kit, Black
  • Inkless Printing – Gloryang portable printer uses advanced thermal technology, requiring no ink, toner, or ribbons. The package includes the printer, 3 thermal paper rolls (1 pre-installed + 2 extras), a carrying case, charging cable, manual, and guide card. Cost-effective and easy to use. Note: Only compatible with Gloryang thermal paper; not for regular, inkjet, or plain paper.
  • Seamless Bluetooth Connectivity – The Gloryang mobile sticker printer connects easily to iOS and Android via Bluetooth through the “Jadens Printer” app. It also works as a compact printer for laptops and computers—simply turn on the printer first, then install the driver to set up. Print anytime, anywhere.
  • Ultra-Portable Design - Weighing just 1.75lb and measuring 1.7in thick, the Gloryang portable printer is incredibly lightweight and compact. Perfect for on-the-go printing during travels, work, or university, it easily fits into backpacks or briefcases. Ideal for emergency scenarios, contracts, office documents, and more.
  • Space-Saving Design - Say goodbye to clutter with the built-in paper bin of the Gloryang printer. It saves space and keeps your workspace tidy, whether you're on the go or in a car. With two ways to load thermal paper and the ability to print documents ranging from 2 to 8.5 inches, it caters to various printing needs.
  • Perfect Gift for Holiday-Gloryang thermal printer can print clear photos, image, design drawings and text. It's perfect for busy professionals and students. Come with a nice case, making it as a perfect Christmas and new year gift for your families and friends.

Or skip the browser setup

Call ScreenshotNeo directly when you need a clean file without maintaining Puppeteer or Playwright workers:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Cookie banners, consent dialogs, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents such as Claude, Cursor, and other MCP clients call take_screenshot, get_page_info, and capture_pdf. The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.

Frequently Asked Questions

Does window.print() save a file automatically?

No. It opens the browser’s print dialog; the person must choose a printer or a Save as PDF destination.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Should I use a screenshot or PDF for archiving?

Use PDF when selectable text, pagination, and paper dimensions matter. Use a screenshot when pixel appearance is the requirement.

Can JavaScript print only one element?

Not directly with window.print(). Use print CSS to hide everything else, or capture the element with a selector in Puppeteer, Playwright, or ScreenshotNeo.

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.