Free tools Windows power users keep installed
One-click scans. No signup required.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
If doc.html() breaks text or page elements in the wrong place, first confirm that you are using jsPDF’s html() plugin—not the separate html2pdf.js wrapper or legacy fromHTML() API. For current jsPDF html(), try autoPaging: "text" when text-aware page handling is appropriate. If you need to control every page break yourself, set autoPaging: false and place content manually. Neither setting guarantees that arbitrary cards, tables, images, or CSS boxes will stay together: this is a canvas-based rendering path, not browser print layout.
First identify which HTML-to-PDF API is splitting the content
Pagination settings are not interchangeable across these APIs. Check the actual method called in your code and the installed package versions before changing CSS or copying an option from an issue thread.
Direct jsPDF html()
This is the jsPDF plugin method, typically called as doc.html(element, options). It uses html2canvas to render HTML and provides its own options, including autoPaging, position, margins, and html2canvas settings. The current project documentation notes that html2canvas is a dynamic dependency; passing an HTML string also requires DOMPurify.
Recommended Free Tools
The html2pdf.js wrapper
html2pdf.js is a separate wrapper built around jsPDF and html2canvas. It has its own pagebreak configuration. Its settings do not become options on direct doc.html() calls just because both paths eventually use the same underlying libraries.
#1 Best Overall
- INNOVATIVE CARTRIDGE-FREE PRINTING — No more dealing with lots of tiny ink cartridges; With this wireless document and photo printer each ink bottle set is equivalent to about 90 individual cartridges²
- LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; When you choose this combination printer, scanner and copier you can print up to 4,500 pages black/7,500 color³
- COLOR PRINTING — Up to 2 years of ink in the box4 (and with every replacement ink set) for fewer out-of-ink frustrations
- ZERO CARTRIDGE WASTE — By using an Epson EcoTank printer you can help reduce the amount of cartridge waste ending up in landfills
- HOME PRINTER DESIGNED FOR RELIABILITY — The Epson EcoTank ET-2800 All-in-One Supertank Color Printer creates vivid, detailed prints and documents thanks to Micro Piezo Heat-Free Technology; Fire off 10 ISO pages per minute1 to easily finish large jobs
Legacy fromHTML()
Older reports about fromHTML() describe a different API. They may suggest symptoms worth reproducing, but do not establish how current html() behaves. Confirm which method your application actually invokes before treating an old fix as relevant.
Fix pagination in direct jsPDF html()
In the current jsPDF implementation, autoPaging defaults to true when omitted. Current TypeScript definitions list true/false as well as the modes "slice" and "text". Start by making the behavior explicit:
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
const content = document.querySelector("#content");
if (!content) {
throw new Error("Could not find #content");
}
doc.html(content, {
autoPaging: "text",
callback: (pdf) => pdf.save("output.pdf")
});
This is a starting point, not a promise that every element will remain intact. The "text" mode is intended for text-aware page handling; it is not a general keep-together rule for arbitrary DOM elements. A large card, table, or image can still cross a page boundary, and the output may differ from browser print preview.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Choose the paging mode for the failure you see
"text": Test this when a line of text is being split or text flow across pages is the main concern."slice": This is another current-typing option. It slices rendered content rather than promising semantic element boundaries, so inspect page edges closely for clipped lines or other cut content.false: Turn off automatic paging when you intend to calculate positions and add pages yourself. This gives you control, but you must handle placement, page creation, and overflow in your own code.- Omitted: In the current implementation, omission means
true, not manual pagination. Older installed releases may differ, so check the version in your application.
Keep the rest of the rendering conditions unchanged while testing a mode: use the same DOM, page size, margins, browser, and options. Otherwise a change in output does not tell you which setting caused it.
Rank #2
- CARTRIDGE-FREE PRINTING — Print lab-quality photos, graphics and creative projects; Get vibrant colors and sharp text with Epson's high-accuracy printhead and Claria ET Premium 6-color inks
- INK BOTTLES — Save on photos1 and creative projects with affordable in-house printing; All-in-one printer allows you to print 4" x 6" photos for about 4 cents each vs. 40 cents with traditional ink cartridges1
- LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; Printer, scanner and copier lets you print up to 6,200 color pages³
- PRINT FOR LONGER — Up to 2 years of ink in the box² (and with every replacement ink set) for fewer out-of-ink frustrations with this wireless printer
- ZERO CARTRIDGE WASTE — Epson EcoTank printer helps reduce the amount of cartridge waste ending up in landfills; Cartridge-free printer uses high-yield ink bottles; Each replacement ink bottle set is equivalent to about 100 individual ink cartridges⁴
When manual pagination is the better fit
Use autoPaging: false only if your application can decide where content belongs and add pages accordingly. A manual layout might measure a block, check the remaining page space, create another page if necessary, then render the block at a known position. The exact measurement and placement logic depends on your document; there is no universal jsPDF option that automatically keeps every kind of DOM subtree together.
For html2pdf.js, set its own page-break rules
If your code calls html2pdf(), configure the wrapper’s pagebreak option instead of adding jsPDF html() options. The wrapper documents CSS and legacy modes, plus explicit selector lists:
html2pdf().set({
pagebreak: {
mode: ["css", "legacy"],
before: [".new-page"],
avoid: [".keep-together"]
}
}).from(element).save();
With CSS mode, the wrapper recognizes break-before and break-after values always, left, and right, as well as break-inside: avoid. The selector options let you target a boundary before or after a chosen element, or ask the wrapper to avoid splitting selected elements. These are html2pdf.js controls, not settings for direct doc.html().
Outdated 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 matchWindows 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 reinstallUse targeted avoidance before avoid-all
The wrapper’s avoid-all mode tries to avoid splitting every element. That can push material to the next page or leave large gaps, especially when blocks are tall. Start with meaningful elements such as a short card or section, and compare the resulting PDF. Avoid applying a blanket rule until you have checked both the page breaks and the whitespace it creates.
Rank #3
- SET IT UP ONCE AND PRINT WITH CONFIDENCE. No complicated maintenance. Just easy, reliable printing you can count on.
- INK FOR YEARS. NOT MONTHS. Up to 2 years of ink included. Get thousands of pages of cartridge-free printing. More pages, less hassle
- KEEPS PRINTING WELL AFTER COMPETITORS HAVE QUIT. No complex maintenance. Sharper text, richer colors.[2] Only with HP Smart Tank
- PREMIUM SUPPORT - Strong technical expertise to solve issues faster
- THE LAST PRINTER YOU'LL EVER NEED. Enjoy years of refillable, cartridge-free printing.
Diagnose the break with a controlled reproduction
- Record the environment. Note the installed versions of
jspdf,html2canvas, and, if used,html2pdf.js; the browser and operating system; the page format and margins; and whether the input is a DOM node or an HTML string. Current-branch documentation may not describe an older package in your lockfile. - Reduce the page to the failing subtree. Make the smallest example that still breaks, while preserving the relevant computed dimensions and CSS. Save the output PDF and record the page boundary where actual behavior differs from what you expect.
- Change one pagination layer at a time. For direct jsPDF
html(), compareautoPaging: "text"and, if feasible,false. For html2pdf.js, try its CSS mode and a specificavoidselector. Keep markup, page size, margins, and browser fixed during each comparison. - Check ignored content against layout calculations. If you use elements marked
data-html2canvas-ignore, test whether omitting them changes where breaks occur. An html2pdf.js issue report describes unexpected breaks associated with ignored nodes; treat that as a diagnostic lead, not proof of a universal defect. - Test difficult boundaries separately. Try a tall element that cannot fit within the remaining page, a short block near the bottom edge, and a line of text close to the boundary. Avoid rules and canvas slicing can fail in different ways, so one successful case does not establish that every element type is handled correctly.
- Prepare a focused bug report if needed. Include exact package versions, browser, minimal markup and CSS, options, margins, page format, and the actual and expected results. A reproducible example is more useful than a screenshot alone.
Understand why CSS page-break rules may not be enough
Both direct jsPDF html() and html2pdf.js rely on a canvas-rendering path. html2canvas does not implement every CSS feature: CSS properties must be implemented individually, so a rule that works in browser printing is not guaranteed to behave the same way in a rendered canvas PDF. In particular, break-inside: avoid should not be treated as a universal keep-together guarantee for every element, size, and page position.
Historical reports illustrate failure patterns rather than proving that all versions share one defect. A 2018 jsPDF report concerned fromHTML(); a 2020 html2pdf.js report described gaps and breaks despite avoid rules. Other reports describe cuts at canvas page boundaries and unexpected breaks related to ignored elements. Use these examples to decide what to test in your own reproduction, not as evidence that a specific workaround will fix every project.
When to consider a different rendering strategy
If the document must preserve semantic text flow, reliably keep complex blocks together, or closely match browser print rules, compare the canvas-based output with another rendering approach before building more workarounds into the page. Evaluate the requirements that matter to your application:
- Text and appearance: Does the output need selectable, semantic text, or is a canvas-like visual result acceptable?
- Print fidelity: How important are browser CSS and print rules to the finished pages?
- Pagination control: Do you need deliberate breaks, repeated headers or footers, or predictable treatment of long tables?
- Runtime: Must rendering happen in the browser, or can it run in a server-side environment?
- Document scale: What output size and rendering time are acceptable for long documents?
The documented limitations of canvas rendering are a reason to compare approaches, not proof that one alternative is best for every document. Test the actual content and runtime you need.
Rank #4
- 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
Or skip the browser setup
If your goal is a screenshot of a web page rather than a paginated PDF, ScreenshotNeo can return an image with one GET request. Its screenshot API does not fix jsPDF pagination or produce the same kind of document flow; it is an option when a screenshot is the output you need.
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 request options. 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 step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, with the outcome reported in X-Page-Verdict and X-Billed headers. Its 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.
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.
Frequently Asked Questions
Does break-inside: avoid guarantee an element will stay on one PDF page?
No. In a canvas-based pipeline, it is best treated as a best-effort instruction; the element’s height, page position, wrapper behavior, and renderer support can affect the result.
Can I use html2pdf.js pagebreak options with direct jsPDF html()?
No. Configure the API that your code actually calls: pagebreak belongs to html2pdf.js, while direct jsPDF html() uses its own options.
Why does a rule work in browser print preview but not in the generated PDF?
Browser printing and html2canvas-based rendering are different paths. html2canvas does not support every CSS feature, so print behavior is not a reliable guarantee of canvas output.
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.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errors

