The quickest way to convert HTML to a clean, unbranded PDF is to open the file or page in a desktop browser, press Ctrl/Cmd+P, choose Save as PDF, disable browser headers and footers, inspect the preview, and save. Nothing is uploaded, and the preview lets you catch missing images, fonts, backgrounds, or bad page breaks before delivery.
For repeatable jobs, use Puppeteer (Node.js), WeasyPrint (Python), or the local wkhtmltopdf command. The converter itself normally does not add a watermark; unexpected branding usually comes from the source HTML or a hosted service’s plan.
Convert one HTML file in a browser
- Open the HTML file, or navigate to the webpage you need.
- Press Ctrl+P on Windows/Linux or Cmd+P on macOS.
- Set the destination/printer to Save as PDF.
- Open the print dialog’s additional settings. Turn off Headers and footers (the wording differs by browser).
- Choose the paper size, orientation, margins, scale, and whether backgrounds should print.
- Review every page in the preview, then save the PDF.
This is the best choice for a one-off conversion: it requires no converter installation and keeps a local file on your computer. A preview is especially useful for checking web fonts, images, colored backgrounds, tables, and page breaks.
Control the PDF with print CSS
Screen layouts often contain navigation, buttons, videos, cookie notices, and chat controls that should not appear on paper. Add a print stylesheet to the page before printing:
#1 Best Overall
- Engineered for convenience – This new Brother Monochrome Laser Printer is conveniently equipped with a flatbed scan glass for quick copying and scanning. Mobile Device Compatibility AirPrint, Google Cloud Print 2.0, Brother iPrint and Scan, Mopria, Cortado Workplace
- Optimized for efficiency – Engineered with new features, the HL L2395DW laser printer (replacement for the HLL2380DW) and has been optimized for efficiency, allowing you to print up to 36 pages per minute(1)
- Faster, high quality prints: This monochrome laser printer is built with a 250 sheet paper capacity that helps improve efficiency due to less time spent refilling trays. It also handles both letter and legal sized paper. Power Source AC 120V 50/60Hz.Machine Noise (Ready/Printing): 30dB / 50dB
- Cloud based print & scan – Print from and scan to popular Cloud services directly from the 2.7" color touchscreen, including Dropbox, Google Drive, Evernote, OneNote, and more(4)
- Wireless printing & exceptional support – This printer’s simple to connect wireless technology allows you to submit print jobs from your laptop, smartphone, desktop, and tablets(2). The "Touch to connect" printing with NFC delivers added convenience(3).
@media print {
.no-print, nav, button, video, .cookie-banner {
display: none !important;
}
}
@page {
size: A4;
margin: 16mm;
}
h1, h2, h3 {
break-after: avoid;
}
table, figure {
break-inside: avoid;
}
What these rules do
@media printapplies only while the browser is preparing printed output, so the normal screen design remains unchanged.@pagesets the paper size and printable margins. ChangeA4to another supported size when your audience requires it.break-after: avoidhelps keep a heading with the paragraph that follows.break-inside: avoidreduces splits inside tables and figures, although the browser may still split content when it cannot fit on one page.
Use the print preview after each CSS change. If a background color or image is missing, enable the dialog’s Background graphics option; that setting is separate from the CSS.
Automate conversion with Puppeteer (Node.js)
Puppeteer launches Chromium, loads the document, and exposes page.pdf(). Its PDF method uses the print CSS media type by default, so your @media print rules are honored.
Install and run
npm install puppeteer
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('file:///absolute/path/report.html', {
waitUntil: 'networkidle0'
});
await page.pdf({
path: 'report.pdf',
format: 'A4',
printBackground: true,
margin: {
top: '16mm',
right: '16mm',
bottom: '16mm',
left: '16mm'
}
});
await browser.close();
Replace the file URL with an absolute path, or use an https:// URL for a page served by your application. networkidle0 waits until network activity settles, which helps when images and stylesheets load asynchronously. If the page is designed only for screen media, call await page.emulateMediaType('screen') before page.pdf(); otherwise the default print media is normally what you want.
Puppeteer details that affect output
- Backgrounds:
printBackground: trueis required for CSS backgrounds and many visual designs. - Margins: Explicit margins make output consistent across machines instead of relying on browser defaults.
- Page readiness: A network-idle wait does not guarantee that a client-side chart has finished drawing. Add an application-specific wait for a selector or other readiness condition when needed.
- Watermarks: Puppeteer writes the PDF bytes produced by Chromium. It does not document an automatic branding watermark, but inspect the result if your source page contains a logo or watermark of its own.
Automate from Python with WeasyPrint
WeasyPrint accepts a URL, file, or HTML string and writes a PDF directly. It is a good fit for a Python document pipeline where HTML and CSS are already under your control.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →from weasyprint import HTML, CSS
HTML('report.html').write_pdf(
'report.pdf',
stylesheets=[CSS(string='@page { size: A4; margin: 16mm }')]
)
write_pdf() can write one PDF file or return PDF bytes for an application response. When images, fonts, or stylesheets are stored behind controlled URLs, configure a custom URL fetcher so the renderer can load those assets deliberately. Verify the output whenever the page depends on browser behavior or dynamically generated content; Puppeteer is the safer starting point for pages that must match Chromium rendering.
Rank #2
- FAST PRINT AND SCAN: The Brother MFC-L3710CW lets you get things done with up to 19 ppm print speed and scans up to 29 ipm in black and 22 ipm in color
- AFFORDABLE AND FLEXIBLE COLOR PRINTING: Affordably print professional quality, rich, vivid color documents with laser printer quality. The 250 sheet adjustable paper tray helps minimize refills and the manual feed slot handles varied printing needs
- 3.7” COLOR TOUCHSCREEN: Print from and scan to popular cloud apps directly from the 3.7" color touchscreen including Dropbox, Google Drive, Evernote, OneNote and more. Save time by creating custom shortcuts on the touchscreen for your most used features.
- PRINT AND CONNECT YOUR WAY: Print wirelessly from your desktop, laptop, smartphone and tablet with built-in wireless, and Wi-Fi Direct or connect locally to a single computer via USB interface.
- UNIT DIMENSIONS (WxDxH): 16.1” W x 18.7” D x 16.3” H
Use wkhtmltopdf as a local command-line converter
wkhtmltopdf is an open-source LGPLv3 command-line tool that renders HTML into PDF with Qt WebKit.
wkhtmltopdf report.html report.pdf
It is convenient for scripts and build systems. Treat it as a rendering engine rather than a guarantee of modern browser compatibility: check the generated PDF against the CSS, fonts, images, and JavaScript used by your page. If the layout is wrong, compare the same document in a current browser or Chromium-based Puppeteer run.
Choose the right method
| Need | Best starting point | Reason |
|---|---|---|
| One local conversion | Browser Print → Save as PDF | No installation or upload, with an immediate visual preview. |
| Modern JavaScript and browser-faithful rendering | Puppeteer | Uses Chromium and print CSS by default. |
| Python pipeline with explicit CSS inputs | WeasyPrint | Direct Python API, stylesheets, and controllable asset fetching. |
| Scriptable local CLI | wkhtmltopdf | Simple open-source command-line invocation. |
How to verify that the PDF is really clean
- Open the first page and inspect corners, headers, and footers for service branding.
- Search the PDF text for words such as “trial,” “created with,” or a provider name.
- Check later pages, where a watermark may be repeated even if page one looks clear.
- Confirm that the source HTML itself does not contain a logo, background mark, or footer that resembles a converter watermark.
- If you used a hosted converter, read its current export and plan terms. A local open-source tool’s documentation may describe direct PDF output without an automatic watermark, but that is not a universal promise for every third-party service or plan.
Troubleshooting common failures
The PDF is blank
Confirm that the input path or URL is correct and that the document can be opened normally. For Puppeteer, wait for the page to finish loading and use an absolute file:/// URL. For a hosted page, a bot check, login screen, or failed request may be what the renderer received instead of the intended document.
Free tools Windows power users keep installed
One-click scans. No signup required.
Images, fonts, or CSS are missing
Use absolute, reachable asset URLs or a correctly resolved local path. Check file permissions and browser console/network errors. In the browser dialog, enable background graphics when required. In WeasyPrint, provide a URL fetcher for assets that need controlled authentication or path handling.
JavaScript content is absent
Use Puppeteer for a page whose content is produced in the browser. Wait for a specific element or application-ready condition rather than assuming that the initial HTML response contains the final content. A static renderer or an early print can capture an empty chart or placeholder.
Rank #3
- Create a mix using audio, music and voice tracks and recordings.
- Customize your tracks with amazing effects and helpful editing tools.
- Use tools like the Beat Maker and Midi Creator.
- Work efficiently by using Bookmarks and tools like Effect Chain, which allow you to apply multiple effects at a time
- Use one of the many other NCH multimedia applications that are integrated with MixPad.
Headings and tables split badly
Add the print rules for break-after and break-inside, set explicit margins, and avoid placing an oversized element in a container that cannot fit on a page. Always inspect the preview or generated PDF because pagination is ultimately constrained by paper size.
A browser URL, date, or page number appears
Turn off the print dialog’s Headers and footers setting. This is a browser print option, not a CSS watermark, and the label varies by browser and operating system.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe output contains an unexpected brand mark
First determine whether it is in the source HTML by opening the page normally. Then search the PDF text and inspect repeated corners on every page. If the mark is added by a hosted conversion service, check that service’s current plan and export terms or switch to a local workflow.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup: ScreenshotNeo
ScreenshotNeo is a website screenshot API and MCP server. One request can return a clean screenshot or PDF of a URL, without maintaining your own browser runner. 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 disabled. Bot checks, 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. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.
The API supports full-page capture with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, PDF paper size/margins/orientation/page ranges, custom CSS and JavaScript, pre-capture clicks, hidden selectors, selector/delay/network-idle waits, request and resource blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Common parameter names used by other screenshot APIs also work.
cURL
See the ScreenshotNeo documentation for PDF options and authentication details.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #4
- Save money by using PDF Fusion to view over 100 file formats without having to purchase additional software
- Merge incompatible files quickly and easily by dragging and dropping in PDF Fusion to create a new PDF documents
- Save time with PDF Fusion's editing tools to reuse the content from existing documents without starting from scratch
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/report.html -o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com/report.html"},
timeout=90
)
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.com/report.html'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Every feature is included on every plan. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots, with yearly billing providing two months free. Create a free ScreenshotNeo account to try it without adding a card.
Frequently Asked Questions
Can CSS remove a watermark already inside the HTML?
No. Print CSS can hide an element when you control its selector, but a watermark that is part of an image, canvas, or document content must be removed or replaced in the source before conversion.
Does Save as PDF work without an internet connection?
Yes, for a self-contained local HTML file. External fonts, images, stylesheets, and scripts still need to be available locally or reachable when the page is rendered.
Why does my PDF have fewer pages than the browser preview?
Different engines apply different font metrics, margins, and pagination rules. Generate and inspect the PDF with the same renderer you will use in production, then adjust print CSS and explicit page settings.
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.




