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 an event-driven handshake instead of guessing a delay: set window.status to a non-ready value, listen for the Leaflet tile layer’s load event, then change the status to a known string. Run wkhtmltopdf with --window-status set to that exact string.

Leaflet’s map load event only indicates that the map was initialized at its initial center and zoom. A tile layer’s GridLayer load event fires after all visible tiles for that layer have loaded, which is the signal you normally need before producing a PDF.

The reliable window-status pattern

Attach the tile-layer handler before adding the layer to the map. Initialize window.status before the request starts, and use exactly the same final string in the page and in the command line.

<div id='map' style='height: 500px'></div>
<script>
  var map = L.map('map').setView([51.505, -0.09], 13);
  var tiles = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&copy; OpenStreetMap contributors'
  });

  window.status = 'map-loading';
  tiles.once('load', function () {
    window.status = 'leaflet-ready';
  });
  tiles.addTo(map);
</script>

Render the page with JavaScript enabled and wait for that status:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
PDF Extra 2024| Complete PDF Reader and Editor | Create, Edit, Convert, Combine, Comment, Fill & Sign PDFs | Lifetime License | 1 Windows PC | 1 User [PC Online code]
  • EDIT text, images & designs in PDF documents. ORGANIZE PDFs. Convert PDFs to Word, Excel & ePub.
  • READ and Comment PDFs – Intuitive reading modes & document commenting and mark up.
  • CREATE, COMBINE, SCAN and COMPRESS PDFs
  • FILL forms & Digitally Sign PDFs. PROTECT and Encrypt PDFs
  • LIFETIME License for 1 Windows PC or Laptop. 5GB MobiDrive Cloud Storage Included.
wkhtmltopdf --enable-javascript --window-status leaflet-ready input.html output.pdf

The manual describes --window-status as waiting until window.status equals the supplied string. If your page already loads Leaflet elsewhere, put only the status and event-handling code after the map and layer have been created.

Why the Leaflet event matters

Map initialization is not tile completion

Leaflet’s map-level load event means the map has been initialized with its initial view. It does not guarantee that every visible image from a basemap or overlay has finished downloading. Waiting on that event alone can produce a PDF with empty or partially painted tiles.

GridLayer load covers visible tiles

A tile layer is a GridLayer. Its load event is fired when the grid layer has loaded all visible tiles. For a normal basemap, that is the appropriate readiness signal. The same API exposes tileloadstart, tileload, tileerror, and isLoading() for diagnosis and more elaborate coordination.

Register before addTo

Install the handler before calling tiles.addTo(map). Registering afterward creates a race: a very fast or cached request could finish before the callback exists, leaving wkhtmltopdf waiting forever.

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

A complete page-side implementation

The following version adds a finite timeout and an explicit tile-error state. It is useful when a failed provider request should be visible to the calling process instead of silently producing an apparently complete map.

Rank #2
MobiPDF Lifetime - Professional PDF Editor for Windows | Edit, Sign & Convert PDFs | Best Adobe Acrobat Pro Alternative | Lifetime License
  • Edit PDFs with Ease. Modify text, images, and layouts directly within your PDF documents.
  • Convert & Organize. Export PDFs to Word, Excel, or ePub, and organize files with ease.
  • Read & Annotate. Enjoy intuitive reading modes and powerful tools to comment, highlight, and mark up PDFs.
  • Create & Manage PDFs. Create new PDFs, combine multiple files, scan documents, and compress for easy sharing.
  • Fill & Sign Forms. Complete forms and digitally sign documents with secure e-signature tools.
<div id='map' style='height: 500px'></div>
<script>
  var map = L.map('map').setView([51.505, -0.09], 13);
  var base = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&copy; OpenStreetMap contributors'
  });

  window.status = 'map-loading';
  var finished = false;

  base.once('load', function () {
    if (!finished) {
      finished = true;
      window.status = 'leaflet-ready';
    }
  });

  base.on('tileerror', function (event) {
    if (!finished) {
      finished = true;
      window.status = 'leaflet-error';
      console.error('Leaflet tile failed', event);
    }
  });

  base.addTo(map);

  setTimeout(function () {
    if (!finished) {
      finished = true;
      window.status = 'leaflet-timeout';
    }
  }, 15000);
</script>

With this policy, only a successful layer reaches leaflet-ready. A conversion wrapper should detect leaflet-error or leaflet-timeout by using an outer process timeout and then report the page problem. If your business rule is to produce a best-effort PDF even when some tiles are missing, change the timeout branch to set leaflet-ready and record a warning in the page; that deliberately trades completeness for a bounded render.

Waiting for several tile layers

If the PDF must contain a basemap and one or more overlays, one layer’s load event is insufficient. Attach a handler to every required layer and set the ready status only after all of them report success.

var map = L.map('map').setView([51.505, -0.09], 13);
var base = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  attribution: '&copy; OpenStreetMap contributors'
});
var overlay = L.tileLayer('https://example.invalid/tiles/{z}/{x}/{y}.png');
var required = [base, overlay];
var remaining = required.length;
var failed = false;

window.status = 'map-loading';

required.forEach(function (layer) {
  layer.once('load', function () {
    remaining -= 1;
    if (remaining === 0 && !failed) {
      window.status = 'leaflet-ready';
    }
  });
  layer.on('tileerror', function (event) {
    failed = true;
    window.status = 'leaflet-error';
    console.error('Tile error', event);
  });
  layer.addTo(map);
});

Use the actual URLs and layer objects from your application. If an overlay is optional, do not include it in required; otherwise a nonessential outage can block every PDF.

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

Fixed delay versus an event-driven wait

Method How it works Strength Failure mode
--window-status The page changes window.status after the tile-layer event. Tracks the actual completion condition for visible tiles. Requires page code that can set the status; an unhandled tile failure can leave the process waiting.
--javascript-delay <msec> wkhtmltopdf waits a fixed number of milliseconds after page loading. Works when you cannot modify the page. No universal delay is correct: a slow connection can still be incomplete, while a fast one wastes time.

The manual also documents --run-script, which lets you execute extra JavaScript after page loading. That can be useful when you need to set a status from outside the original page, but the script still has to observe a meaningful Leaflet condition. A delay remains a coarse fallback, not proof that tiles are ready.

Command-line checks before debugging Leaflet

  1. Run wkhtmltopdf --version and note the packaged build. The Debian Bookworm manual documents these switches, but distributions and patched binaries can differ.
  2. Confirm the page is allowed to run JavaScript. Use --enable-javascript; do not pass --disable-javascript.
  3. Make sure the status starts as something other than the target value. If it already equals leaflet-ready, the converter can proceed before any tiles are requested.
  4. Use the exact same spelling and capitalization in window.status and --window-status.
  5. Run the conversion in an environment that can resolve the tile host, negotiate HTTPS, and reach any authentication endpoint used by your map.

Troubleshooting common failures

The PDF is created before tiles appear

Usually the command is using a short --javascript-delay, or it waits for the map’s initialization event rather than the tile layer’s load. Move the callback to the GridLayer and use --window-status leaflet-ready.

Rank #3
Adobe Acrobat Pro | PDF Software | Convert, Edit, E-Sign, Protect | PC/Mac Online Code | Activation Required
  • Create and edit PDFs. Collaborate with ease. E-sign documents and collect signatures. Get everything done in one app, wherever you go.
  • Edit text and images without jumping to another app.
  • E-sign documents or request e-signatures on any device. Recipients don’t need to log in to e-sign.
  • Convert PDFs to editable Microsoft Word, Excel, or PowerPoint documents.
  • Share PDFs for collaboration. Commenting features make it easy for reviewers to comment, mark up, and annotate.

wkhtmltopdf waits indefinitely

Check for a spelling mismatch, a handler attached after addTo, or a tile provider that never completes. Add tileerror handling and a finite page timeout. If the page intentionally reports leaflet-error or leaflet-timeout, ensure the calling process has its own deadline and can return a useful error instead of waiting forever.

JavaScript appears not to run

Verify that JavaScript is enabled and that the script is not throwing an exception before the event registration. A quick diagnostic is to set window.status = 'script-started' as the first statement, then temporarily wait for that value. Restore the real readiness status after fixing the exception.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

The map area is blank but status says ready

Inspect the browser-side network requests and tileerror events. The converter may not have DNS, outbound network access, required headers, cookies, or a trusted certificate. A provider can also reject the wkhtmltopdf user agent or require an API key. Resolve that access problem rather than increasing the delay.

Only one of several layers is visible

Coordinate every required layer, as shown above. Also check that the layer is actually added to the map in the conversion path; a layer selected interactively in a normal browser may not be enabled in the headless render.

Google map tiles are involved

Use Google’s supported Maps API rather than fetching tile images directly. Leaflet’s FAQ describes the GoogleMutant plugin route and warns that it can have lag or glitches. The provider’s terms and authentication requirements still apply in the environment running wkhtmltopdf.

Rank #4
PDF Extra Lifetime - Professional PDF Editor - Best Adobe Acrobat Pro Alternative - Lifetime License for Windows PC
  • Perfect Adobe Acrobat Pro alternative – lifetime license for Windows 10 and 11.
  • EDIT text, images, pages, hyperlinks, designs in PDF documents. ORGANIZE PDFs.
  • READ and Comment on PDFs – Intuitive reading modes & document commenting and mark up tools!
  • CREATE, COMBINE, SCAN and COMPRESS PDFs.
  • FILL forms & Digitally Sign PDFs. Work with Digital certificates

Reliability and rendering considerations

Choose a bounded policy

Network conditions vary, so combine the event handshake with a timeout and an outer process deadline. Decide in advance whether a timeout should fail the job or create a best-effort document. Do not silently label an incomplete map as ready.

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

Keep the readiness scope narrow

Set the status only after the layers that matter for this PDF have loaded. Waiting for unrelated analytics, chat scripts, or below-the-fold resources can make conversion slower without improving the map.

Re-rendering after map changes

If your script changes the center, zoom, or visible overlays after the first render, reset window.status to a loading value and attach a new completion cycle before making the change. Otherwise wkhtmltopdf may capture the old ready state.

Tile-server policy and attribution

Keep the provider’s required attribution in the map and verify that automated rendering is allowed. A successful HTTP request does not override a tile host’s usage terms.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. It can capture a URL as PNG, JPEG, WebP, or PDF without you maintaining a wkhtmltopdf process. Its wait controls include a selector, a delay, or network idle, and it supports custom JavaScript when a page needs an application-specific readiness step. The service also supports full-page capture with lazy images loaded, device and viewport settings, retina scale, custom headers and cookies, blocking selected requests or resource types, and asynchronous jobs with signed webhooks.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
PDF Pro 3 - PDF editor to create, edit, convert and merge PDFs - 100% Compatible with Adobe Acrobat - for Windows 11, 10, 8.1, 7
  • ALL-IN-ONE SOLUTION – read, edit, convert, merge and protect your PDF files
  • MAXIMUM FUNCIONALITY – create interactive forms, compare PDFs, bates numbering, find and replace text or colors, convert documents, OCR engine, comment, highlight, fill out and print forms, document protection and others
  • EASY TO INSTALL AND USE – well-structured user-interface, in-program instructions, free tech support whenever you need it
  • GREAT VALUE FOR MONEY - why spend a fortune if you can have maximum functionality at a reasonable price - this also fits the requirements of companies very well

One request is enough for a basic capture (see the ScreenshotNeo API documentation):

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/map.html -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com/map.html"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com/map.html' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Every response identifies the result with X-Page-Verdict and X-Billed headers. An 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; Growth is $15 for 15,000, Pro is $39 for 60,000, Scale is $99 for 250,000, and Business is $249 for 1,000,000. Yearly billing gives two months free, and every feature is included on every plan. Create a free ScreenshotNeo account to try the 1,000 monthly shots without adding a card.

Frequently Asked Questions

Does changing window.status change what appears in the PDF?

No. It is a browser-side signal consumed by wkhtmltopdf; the status string is not painted into the document unless your own page displays it.

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

Do I need exactly Leaflet 1.9.4?

The documented GridLayer events are described in the Leaflet 1.9.4 API. Other versions or vendor builds may differ, so verify the event behavior and test the specific Leaflet bundle shipped with your page.

Can I wait for a second map view in the same conversion?

Yes. Before changing the view, set a loading status, observe the relevant layer’s next load cycle, and set the ready status only after the new visible tiles have completed.

Quick Recap

Bestseller No. 1
PDF Extra 2024| Complete PDF Reader and Editor | Create, Edit, Convert, Combine, Comment, Fill & Sign PDFs | Lifetime License | 1 Windows PC | 1 User [PC Online code]
PDF Extra 2024| Complete PDF Reader and Editor | Create, Edit, Convert, Combine, Comment, Fill & Sign PDFs | Lifetime License | 1 Windows PC | 1 User [PC Online code]
READ and Comment PDFs – Intuitive reading modes & document commenting and mark up.; CREATE, COMBINE, SCAN and COMPRESS PDFs
$99.99
Bestseller No. 2
MobiPDF Lifetime - Professional PDF Editor for Windows | Edit, Sign & Convert PDFs | Best Adobe Acrobat Pro Alternative | Lifetime License
MobiPDF Lifetime - Professional PDF Editor for Windows | Edit, Sign & Convert PDFs | Best Adobe Acrobat Pro Alternative | Lifetime License
Edit PDFs with Ease. Modify text, images, and layouts directly within your PDF documents.; Convert & Organize. Export PDFs to Word, Excel, or ePub, and organize files with ease.
$99.99
Bestseller No. 3
Adobe Acrobat Pro | PDF Software | Convert, Edit, E-Sign, Protect | PC/Mac Online Code | Activation Required
Adobe Acrobat Pro | PDF Software | Convert, Edit, E-Sign, Protect | PC/Mac Online Code | Activation Required
Edit text and images without jumping to another app.; Convert PDFs to editable Microsoft Word, Excel, or PowerPoint documents.
$239.88
Bestseller No. 4
PDF Extra Lifetime - Professional PDF Editor - Best Adobe Acrobat Pro Alternative - Lifetime License for Windows PC
PDF Extra Lifetime - Professional PDF Editor - Best Adobe Acrobat Pro Alternative - Lifetime License for Windows PC
Perfect Adobe Acrobat Pro alternative – lifetime license for Windows 10 and 11.; EDIT text, images, pages, hyperlinks, designs in PDF documents. ORGANIZE PDFs.
$99.99
Bestseller No. 5
PDF Pro 3 - PDF editor to create, edit, convert and merge PDFs - 100% Compatible with Adobe Acrobat - for Windows 11, 10, 8.1, 7
PDF Pro 3 - PDF editor to create, edit, convert and merge PDFs - 100% Compatible with Adobe Acrobat - for Windows 11, 10, 8.1, 7
ALL-IN-ONE SOLUTION – read, edit, convert, merge and protect your PDF files
$29.99

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.