Free tools Windows power users keep installed
One-click scans. No signup required.
Use the browser’s print preview for a one-off PDF; use print CSS and a chart-specific resize hook when you control the page; use Puppeteer when the process must be repeatable. JavaScript content has to finish rendering before capture, and responsive canvas charts may need explicit dimensions after print layout is applied. Always inspect the actual PDF rather than assuming the screen and document are identical.
Choose the right PDF workflow
The best method depends on whether you are saving one page or generating documents regularly.
| Situation | Recommended method | What you control |
|---|---|---|
| One occasional save | Browser print preview | Wait for rendering, then choose destination, paper size, scale, orientation and margins. |
| You own the page | Print-specific CSS | Hide screen-only controls, change layout, set page dimensions and manage page breaks. |
| Repeatable or server-side PDFs | Puppeteer Page.pdf() |
Navigation timing, media type, PDF options, readiness checks and output paths. |
| Responsive canvas charts | Library-specific print handling | Resize the chart when print layout starts, then restore its responsive size. |
These approaches complement one another. Puppeteer uses your print CSS by default, while a browser preview is still the quickest way to discover clipping, missing fonts, unexpected page breaks or altered colors.
Save a rendered page once with browser print
- Open the page and wait until data, charts, web fonts and images have finished loading. If the page has a “Load more” control or a report filter, apply it before printing.
- Open the browser print interface, commonly with Ctrl+P on Windows or Linux and Command+P on macOS. Labels and shortcuts vary by browser and operating system.
- Choose a PDF or “Save to PDF” destination when your platform offers one.
- In the preview, select paper size, portrait or landscape orientation, scale and margins. A wide chart often reads better in landscape, but verify that labels remain legible.
- Scroll through every preview page. Look for a blank chart, a chart split across pages, cut-off legends, missing backgrounds and content hidden behind a fixed header.
- Save the file, then open the saved PDF independently. Preview and the final file can expose different font, color or pagination problems.
If a chart is blank or clipped, wait for its data and rendering to complete before reopening print preview. If the site provides an export control, compare that output with the browser PDF; a canvas chart may need print-time resizing that the browser cannot infer automatically.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →#1 Best Overall
- BEST FOR SMALL BUSINESSES – Engineered for extraordinary productivity, the Brother DCP-L2640DW Monochrome (Black & White) 3-in-1 combines laser printer, scanner, copier in one compact footprint and delivers high-quality black & white prints
- FAST PRINTER WITH EFFICIENT SCANNING – Produces documents quickly with print speeds up to 36 ppm(2) and scan speeds up to 23.6/7.9 ipm(3) (black/color). A 50-page auto document feeder(4) allows for convenient, time saving multi-page scanning and copying
- FLEXIBLE CONNECTION OPTIONS – Easily navigate the changing demands of your business with secure multi-device connectivity via built-in dual-band wireless (2.4GHz / 5GHz) and Ethernet. Or connect locally to a single computer via USB interface
- BROTHER MOBILE CONNECT APP – Print, scan, and manage your wireless printer anytime, from almost anywhere from your mobile device. Order Brother Genuine Supplies, track toner usage, and complete more work on-the-go(5)
- CHOOSE BROTHER GENUINE TONER – When it’s time to replace your toner, be sure to choose Brother Genuine TN830 or TN830XL replacement toner. And with Refresh EZ Print Subscription Service, you’ll never worry about running out of toner again and you’ll enjoy savings of up to 50%(6) on Brother Genuine Toner. Get started with Refresh today with a Free Trial(1)
Prepare a page you control with print CSS
Use @media print for structural changes and @page for paper geometry. MDN describes the print media type and print-specific styles in its Printing – CSS guide, and documents page size, orientation and margins in the @page reference.
@media print {
nav,
.toolbar,
.screen-only,
button,
.chat-widget {
display: none !important;
}
body {
margin: 0;
color: #111;
background: #fff;
}
.report {
width: auto;
max-width: none;
}
h1, h2, h3 {
break-after: avoid;
}
.chart-card,
table,
figure {
break-inside: avoid;
}
}
@page {
size: A4 portrait;
margin: 16mm 14mm 18mm;
}
Change the size value to a named paper size, orientation or dimensions appropriate to your document. Browser support and exact pagination behavior can vary by version, so test the target browsers rather than assuming every declaration is honored identically.
Keep meaningful content and remove screen controls
Hide navigation, sticky toolbars, action buttons and other screen-only elements, but leave headings, explanatory text, table headers and chart labels in the document. Set a readable width for print instead of carrying a narrow, responsive screen column into the PDF. Use break rules to keep a heading with the following content and to avoid splitting a chart card or table where possible.
Handle color and backgrounds deliberately
Print output does not necessarily preserve screen colors. Automated Chromium output uses print media and can modify colors for printing by default. Background graphics also require an explicit PDF option in Puppeteer. If exact colors matter, use the CSS print-color-adjust property (with the browser’s supported prefixed form where appropriate), and verify the physical or PDF result rather than relying on the screen.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #2
- BEST FOR HOMES & HOME OFFICES – Engineered for consistent, premium print quality, the Brother HL-L2405W Monochrome (Black & White) Laser Printer delivers sharp, crisp prints at an affordable price. Prints one-sided documents at speeds up to 30ppm(2)
- COMPACT, CONNECTED PRINTER – Flexible connection options make this an ideal printer for home use and at-home offices. Securely connect to multiple devices with built-in dual-band wireless (2.4GHz/5GHz) or locally to a single computer via USB interface
- BROTHER MOBILE CONNECT APP – Manage your printer remotely and print from your mobile device anytime, from almost anywhere. Order Brother Genuine Supplies, track toner usage, and complete more work on-the-go(3)
- VERSATILE PAPER HANDLING – Enjoy seamless, reliable everyday printing with the 250-sheet paper tray(4) and a manual feed slot that enables printing on envelopes and specialty pape
- BROTHER IS AT YOUR SIDE – Backed by Brother with a 1-year limited warranty and free online, call, or live chat support for the life of your printer
Make responsive charts print correctly
A responsive canvas has separate render and CSS display sizes. Changing only the CSS width can leave the drawing bitmap at the wrong dimensions. Chart.js recommends handling the browser’s print transition with beforeprint and afterprint, and warns that print-layout timing can make automatic resize events unreliable. See its Responsive Charts documentation.
const chart = new Chart(document.getElementById('sales'), config);
window.addEventListener('beforeprint', () => {
// Choose dimensions that fit the selected paper and orientation.
chart.resize(1000, 600);
});
window.addEventListener('afterprint', () => {
// Return to the responsive layout used on screen.
chart.resize();
});
The exact API differs by chart library. The sequence is the important part: finish loading the data, apply the print layout, resize at print time if the library requires it, then restore automatic sizing afterward. A fixed size that fits A4 portrait may be too small in landscape or on Letter paper, so test the page size you actually deliver.
Chart checklist before saving
- Wait for asynchronous data and fonts.
- Confirm that the canvas has a non-zero width and height in print preview.
- Check legends, axis labels, annotations and tooltips converted to static labels where needed.
- Use landscape or a larger format for genuinely wide plots.
- Open the saved PDF and zoom in to check line sharpness and text readability.
Generate PDFs repeatedly with Puppeteer
Puppeteer’s Page.pdf() API generates a PDF with the print CSS media type. Its PDF generation guide shows the navigation-and-save pattern, and the current 25.12.0 API reference lists controls for format, orientation, margins, backgrounds, page ranges, scale and CSS page-size precedence.
Rank #3
- FAST PRINT SPEEDS: Print up to 19 pages per minute.
- COMPACT DESIGN: Space-saving, compact design fits anywhere in your home, school or small office.
- WIRELESS CONNECTIVITY: Print from almost anywhere in your workspace using your compatible mobile device.
- PAPER CAPACITY: Up to 150 sheets.
- SUSTAINABILITY: Uses less than 2 watts in Energy Saver mode.
Install and run a complete Node.js example
npm install puppeteer
const puppeteer = require('puppeteer');
(async () => {
const url = process.argv[2] || 'https://example.com/report';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 1000, deviceScaleFactor: 1 });
await page.goto(url, { waitUntil: 'networkidle2', timeout: 90000 });
// Replace this with an application-specific readiness signal when needed.
await page.waitForSelector('[data-report-ready]', { timeout: 30000 });
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();
}
})();
Run it with node print.js https://your-site.example/report. The selector wait is an example, not a universal signal: pages with authentication, animations, delayed API calls or continuing network activity need a readiness condition defined by that application. Puppeteer’s guide says Page.pdf() waits for fonts by default, but that does not guarantee that your data request or chart animation has completed.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteChoose print or screen media
Because Page.pdf() uses print media, your @media print rules apply automatically. To render screen styles instead, call await page.emulateMediaType('screen') before page.pdf(). Screen media can be useful when the site has no usable print layout, but it may retain navigation, wide columns and interactive controls.
Important PDF options
| Option | Use | Consideration |
|---|---|---|
format |
Named paper such as A4 or Letter. | Use a format your readers or printer expect. |
landscape |
Rotate the page for wide content. | Check that headings and page breaks still work. |
margin |
Set top, right, bottom and left whitespace. | Leave room for printer-safe areas and headers. |
printBackground |
Include CSS background graphics. | It increases visual fidelity but can increase file size. |
pageRanges |
Export selected pages. | Page numbering and ranges depend on the final layout. |
scale |
Scale rendered content. | Excessive scaling can make small labels unreadable. |
preferCSSPageSize |
Let the CSS @page size take precedence. |
Set it when your stylesheet defines the authoritative paper geometry. |
Set only options you need. The page’s loaded assets, print CSS and content length still determine pagination. Generate a representative sample whenever you change fonts, chart dimensions or page size.
Rank #4
- BEST FOR HOME OFFICES & SMALL TEAMS – Engineered for consistent, premium print quality, the Brother HL-L2460DW Monochrome (Black & White) Laser Printer produces documents that are clear, crisp, and easy to review and share, all at an affordable price
- COMPACT, CONNECTED, EXCEPTIONALLY EFFICIENT– Connect with built-in dual-band wireless (2.4GHz/5GHz), Ethernet, or to a single computer via USB interface. Prints at speeds up to 36ppm(2), plus automatic duplex printing saves time and reduces paper waste
- BROTHER MOBILE CONNECT APP – Manage your wireless printer remotely and print from your mobile device anytime, from almost anywhere. Order Brother Genuine Supplies, track toner usage, and complete more work on-the-go(3)
- VERSATILE PAPER HANDLING – Tackle high-volume black & white printing with the 250-sheet capacity paper tray.(4) The manual feed slot enables printing on envelopes and specialty paper
- BROTHER IS AT YOUR SIDE – Backed by Brother with a 1-year limited warranty and free online, call, or live chat support for the life of your printer
Troubleshoot blank, clipped or different output
| Symptom | Likely cause | Fix |
|---|---|---|
| Chart is blank | PDF started before data or chart rendering finished. | Wait for a page-specific ready marker, then verify the canvas in preview; add the chart library’s print resize hook. |
| Chart is cut off | Screen dimensions were reused after print CSS changed the container. | Resize at beforeprint, choose landscape or adjust the print width, and inspect the resulting PDF. |
| Text or backgrounds look lighter | Print color adjustment changed screen colors. | Use print-color-adjust styling where supported and enable printBackground in Puppeteer. |
| Fonts are missing | Web fonts had not loaded, or the PDF environment cannot reach them. | Wait for font readiness, confirm network access and inspect the PDF at high zoom. |
| Extra blank pages | Fixed heights, oversized margins or forced breaks. | Remove rigid heights in print CSS, review break-* rules and test the selected paper size. |
| Automation times out | Persistent connections, slow assets or a page that never reaches network idle. | Use a suitable navigation timeout and an application-specific selector or data-ready event instead of relying only on network idle. |
| Authenticated content is absent | The automated browser has no session or required headers. | Authenticate in the Puppeteer context before navigation and verify the page URL and response status. |
Performance, reliability and file-size considerations
- Wait narrowly. A selector or explicit data-ready event usually provides a clearer boundary than an arbitrary delay. Delays can be useful for animations, but they add latency without proving that the right content is present.
- Control animation. Disable transitions and chart animation in print styles or in the chart configuration so the captured frame is deterministic.
- Keep assets reachable. A PDF worker needs access to stylesheets, fonts, images and API responses. Relative URLs, blocked third-party resources and expired sessions can produce a document that looks fine on your laptop but fails in automation.
- Limit scope. Export only the pages or data the reader needs. Large background images and high-resolution charts increase PDF size and processing time.
- Validate outputs. Treat the PDF as a separate artifact: open it, check page count, search for expected text and visually inspect charts at the delivery paper size.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API that can return PNG, JPEG, WebP or PDF from one GET request. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.
For a PDF-oriented call, see the ScreenshotNeo documentation. The API also supports full-page captures with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, PDF paper size, margins, landscape and page ranges, custom CSS and JavaScript, clicks, selector or network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API and an OpenAPI specification. Its parameter names are compatible with those used by other screenshot APIs, which can simplify migration.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo also includes an MCP server with 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. Other listed plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000 and Business $249 for 1,000,000; yearly billing gives two months free, and every feature is on every plan. Create a free ScreenshotNeo account to start with 1,000 shots a month and no card.
FAQ
Will a PDF preserve JavaScript interactions?
No. The output is a static document. Capture the state and data you want readers to see, and provide a link to the interactive page when interaction remains important.
Best Value
- FROM AMERICA'S MOST TRUSTED PRINTER BRAND – Perfect for small teams printing professional-quality black & white documents and reports. Perfect for 1-3 people
- WORLD'S SMALLEST LASER IN ITS CLASS – Precision laser printing that fits anywhere
- FAST PRINT SPEEDS – Up to 21 black-and-white pages per minute single-sided
- WIRELESS WITH SELF-RESET – Helps you stay connected
- PRINT FROM ANY DEVICE – Wireless printing from any mobile device, PC or tablet. Works with Microsoft, Mac, AirPrint, Android, Chromebook and more
Should I use browser print or Puppeteer for a single report?
Use browser print when setup time matters more than repeatability. Puppeteer becomes worthwhile when the same report must be generated on a schedule, for many URLs or in a deployment pipeline.
Why does a chart look correct on screen but not in the PDF?
Print layout can change the chart container while the canvas keeps its previous render size. A chart-library print hook and a PDF inspection step address that mismatch.
Frequently Asked Questions
Can I email the generated PDF without any further processing?
Yes, but open the exact file you plan to send and verify fonts, page breaks, links and chart legibility first; a successful save does not prove visual correctness.
Does choosing a larger paper size fix every clipped chart?
No. Paper size changes available space, but a canvas can still retain stale dimensions or be affected by print CSS. Resize the chart and test the final format.
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.

