The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →If a Puppeteer PDF is missing text, images, backgrounds, or whole sections, first check whether the content exists in the page before printing. Then check print-specific CSS, asynchronous rendering, fonts, PDF page settings, and the deployed browser environment—in that order. Page.pdf() uses print media, so a page that looks correct on screen can legitimately render differently on paper.
1. Confirm the content is ready before generating the PDF
Start by checking the page in the same browser context, runtime, and URL used for the PDF. A navigation event completing does not prove that client-side rendering, a data request, a chart, lazy-loaded content, or an iframe has finished.
- Navigate to the page and wait for a suitable navigation condition. Puppeteer’s PDF guide demonstrates
waitUntil: 'networkidle2', but treat network idleness as a starting signal, not proof that your application is ready. See the Puppeteer PDF generation guide. - Wait for an application-specific signal: a known selector appearing, a loading indicator disappearing, or a page-defined readiness flag becoming true.
- Immediately before calling
page.pdf(), inspect the missing element: does it exist, contain text, and have visible styles? Also check the browser console and failed requests.
For example, if your app adds a data-report-ready="true" attribute after loading its report, wait for that explicit state:
await page.goto('https://example.com/report', { waitUntil: 'networkidle2' });
await page.waitForSelector('[data-report-ready="true"]');
const state = await page.$eval('.report-summary', element => ({
text: element.textContent,
display: getComputedStyle(element).display,
visibility: getComputedStyle(element).visibility
}));
console.log(state);
Replace the example URL, readiness selector, and inspected element with your app’s actual values. If the node is absent or empty, fix the page’s data or rendering sequence before changing PDF options. If the node is present but hidden, investigate CSS next.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- HP Papers is sourced from renewable forest resources and has achieved production with 0% deforestation in North America. Each ream is wrapped in a polyurethane coated paper wrapper to protect the cut sheets from moisture damage
- Sheet size – 8.5 x 11; Thickness – 20 pounds; Brightness – 92 bright white
- HP Copy&Print20 20 pounds printer paper is Forest Stewardship Council (FSC) certified and contributes toward satisfying credit MR1 under LEED (Leadership in Energy and Environmental Design)
- All HP Papers provide premium performance on HP equipment, as well as on all other printer and copier equipment; 100% satisfaction guaranteed; ColorLok technology provides more vivid colors, bolder blacks and faster drying
- Superior quality, reliability, and dependability for high-volume printing at home, at school and in the office; HP Copy&Print20 print and copy paper prevents yellowing over time to ensure a long-lasting appearance for added archival quality
2. Check print CSS against screen CSS
Puppeteer’s Page.pdf() “Generates a PDF of the page with the print CSS media type.” That is the documented behavior in the Page.pdf() API reference. As a result, rules inside @media print can hide or rearrange material that is visible on screen.
Search your stylesheets for print rules that set display: none, visibility: hidden, alter colors, or change layout. If the PDF is intended to look like a printed document, correct those print styles. If it is intentionally meant to resemble the on-screen page, test screen media before creating it:
await page.emulateMediaType('screen');
const pdf = await page.pdf({ path: 'report.pdf' });
This changes the media mode used for rendering; it does not repair print CSS. Choose the mode that matches the document you actually want to deliver, and verify the result rather than switching media types as a blanket fix.
Rank #2
- 1 ream (500 sheets) of 8.5 x 11 white copier and printer paper for home or office use
- Multipurpose letter size copy paper works with laser/inkjet printers, copiers and fax machines
- Smooth 20lb weight paper for consistent ink and toner distribution; dries quickly and resists paper jams
- Bright white paper (92 GE; 104 Euro) offers great contrast for crisp printing and vivid color
- Virgin copy paper providing professional quality results; acid-free to prevent yellowing
3. Distinguish backgrounds from missing foreground images
CSS background graphics are disabled by default in Puppeteer’s PDF options. If a background color, texture, or image carries information that must appear in the PDF, set printBackground: true:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsconst pdf = await page.pdf({
path: 'report.pdf',
printBackground: true
});
The current PDFOptions reference lists printBackground as false by default. This setting is specifically for print backgrounds. It will not restore an absent DOM element, a failed foreground <img> request, or content hidden by CSS. For those, inspect the element, its computed styles, and its network request.
4. Diagnose missing or changed text and glyphs
Puppeteer waits for fonts by default: the current PDF options reference lists waitForFonts: true, and the PDF guide also says PDF generation waits for fonts. If characters are still missing, substituted, or visibly different, do not assume a longer font wait alone will solve it.
Rank #3
- 3 ream case (1,500 sheets) of 8.5 x 11 white copier and printer paper for home or office use
- Multipurpose letter size copy paper works with laser/inkjet printers, copiers and fax machines
- Smooth 20lb weight paper for consistent ink and toner distribution; dries quickly and resists paper jams
- Bright white paper (92 GE; 104 Euro) offers great contrast for crisp printing and vivid color
- Virgin copy paper providing professional quality results; acid-free to prevent yellowing
- Check failed font requests and confirm each
@font-faceURL resolves in the PDF runtime. - Inspect
document.fontsand whether the specific font face is available when PDF generation begins. - Check the fonts installed in the deployed environment. The Puppeteer troubleshooting guide notes that additional font files may be needed for characters such as Chinese, Japanese, and Korean.
- Compare the local machine and container: one may have a fallback font or language coverage the other lacks.
Font readiness and font availability are different questions. Waiting can ensure a requested font has finished loading; it cannot make an unavailable font, broken URL, or missing language coverage appear.
5. Check page ranges, size, margins, and scale
When content is clipped, shifted, or missing on particular pages, inspect the PDF options together with the page’s @page CSS. The current options reference describes these defaults and interactions:
| Option | What to verify | Documented behavior |
|---|---|---|
pageRanges |
Does the requested range include the page containing the content? | Defaults to an empty string, meaning all pages. |
format |
Is the selected paper format appropriate for the content? | When provided, takes priority over width and height. |
width and height |
Are custom dimensions appropriate for the layout? | Check how they interact with format, which takes priority if set. |
margin |
Are margins consuming space or pushing content onto another page? | Compare the option with CSS page rules and the printable area. |
preferCSSPageSize |
Should CSS @page dimensions determine the PDF page size? |
Defaults to false; when enabled, CSS page size takes priority. |
scale |
Is scaling shrinking or enlarging content enough to affect pagination or clipping? | Defaults to 1; documented range is 0.1–2. |
For example, if you intend to use CSS-defined page dimensions, make that choice explicit and inspect the resulting page count:
Rank #4
- PREMIUM QUALITY: High-resolution full color printing on standard 8.5x11 inch sheets with professional-grade output and crisp, vibrant results
- VERSATILE OPTIONS: Choose from multiple stock materials including paper, card stock, laminated, and double-thick variants to suit your specific needs
- SAME-DAY SERVICE: Orders placed before 2 PM CST Monday through Friday qualify for same-day printing
- CUSTOMIZATION: Simply upload your PDF design for personalized printing
- AMERICAN MADE: Produced in USA facilities using premium stock, ensuring consistent quality and reliable delivery
const pdf = await page.pdf({
path: 'report.pdf',
preferCSSPageSize: true,
printBackground: true,
scale: 1
});
Do not combine fixes blindly. First establish whether the problem is a page excluded by pageRanges, a mismatch between CSS and requested paper size, or content pushed outside the printable area. The option names, defaults, and behavior above are documented in the PDFOptions interface; verify them against the documentation for the Puppeteer version in your project, because defaults and behavior can change.
6. Compare local and deployed browser environments
If the PDF works locally but fails in Docker, CI, or production, record the Puppeteer version and the Chrome or Chromium version in both environments. Then check that the deployed system has the browser’s required shared-library dependencies and the fonts the page needs.
The Puppeteer troubleshooting guide discusses missing shared dependencies in Docker and recommends choosing a Chromium version supported by Puppeteer when using a separately installed browser package. Treat a local/deployed mismatch as an environment problem to reproduce and isolate, rather than assuming the HTML is the cause.
Best Value
- 5 ream case (2,500 sheets) of 8.5 x 11 white copier and printer paper for home or office use
- Multipurpose letter size copy paper works with laser/inkjet printers, copiers and fax machines
- Smooth 20lb weight paper for consistent ink and toner distribution; dries quickly and resists paper jams
- Bright white paper (92 GE; 104 Euro) offers great contrast for crisp printing and vivid color
- Virgin copy paper providing professional quality results; acid-free to prevent yellowing
7. Reduce the case and compare equivalent output
Once the likely category is clear, reduce the failing page to a minimal example that preserves the relevant content type, media rules, fonts, and PDF options. Save the DOM state immediately before PDF generation, note the PDF page count, and compare it with Chrome’s print output using the same browser version and equivalent settings.
A Puppeteer issue opened on November 8, 2022 describes one reporter’s blank-page and pagination discrepancy with Puppeteer 19.2.2 on macOS. It establishes that a discrepancy was reported in that particular setup; it does not establish a general defect or a current universal fix. Use a minimal reproduction and version-specific diagnosis before attributing a current failure to Puppeteer itself.
8. A practical troubleshooting map
| Symptom | First checks | Likely next action |
|---|---|---|
| Whole section absent | Inspect the DOM and readiness state immediately before PDF generation; check print CSS. | Wait for the app’s own content-ready signal or correct a print rule hiding the section. |
| Background color or image absent | Determine whether the material is CSS background graphics. | Set printBackground: true and review print-specific background styles. |
| Foreground image absent | Check that the image node exists and its request succeeded. | Fix the URL, load timing, or CSS visibility; the background option is not the remedy. |
| Text differs or glyphs are missing | Check font requests, font-face availability, and installed fonts. | Fix font loading or install the required font coverage in the runtime. |
| Content clipped, shifted, or on an unexpected page | Check page range, format, dimensions, margins, scale, and @page. |
Align CSS page sizing with the PDF options and inspect pagination again. |
| Failure only in deployment | Compare Puppeteer/browser versions, shared libraries, and installed fonts. | Use a browser supported by the installed Puppeteer version and supply runtime dependencies. |
Or skip the browser setup
If your task is to capture a website as an image or PDF rather than debug your own Puppeteer rendering pipeline, ScreenshotNeo offers a one-request screenshot API and an MCP server. For a PNG, JPEG, or WebP screenshot, the cURL example below saves the response as WebP; see the ScreenshotNeo API documentation for options and PDF capture.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; these steps can each be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and each response identifies the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf 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. Sign up free for ScreenshotNeo.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Documentation version context
The opened Puppeteer PDF guide and PDFOptions reference reported version 25.12.0 at the time the documentation was consulted. Because PDF option defaults and behavior can change, check the documentation corresponding to your installed Puppeteer version before relying on a default in production.
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.

