If images appear in Chrome but disappear from a Syncfusion-generated PDF, the converter usually either finished before the image was available, could not resolve the image URL, or was prevented from reaching it. Fix the problem by testing access from the conversion host, supplying a correct base URL for HTML strings, adding a measured Blink delay, and checking JavaScript, offline mode, HTTPS support, and deployment permissions.
Start with the failure’s location
Before changing converter settings, determine whether the failure is in the HTML, the network, the rendering engine, or deployment. Save the exact HTML sent to Syncfusion and inspect every image source.
- Absolute URL:
https://cdn.example.com/images/logo.pngmust be reachable from the machine or container running the converter. - Relative URL:
images/logo.pngonly works when the HTML-string conversion receives a base URL that points to the resource root. - Data URI: an inline
data:image/png;base64,...does not require a network request, but very large data URIs can increase memory use. - JavaScript or lazy-loaded image: the image may not exist in the DOM until scripts run, scrolling occurs, or a framework finishes rendering.
Compare the source page and image URL in Chrome print preview, then repeat the check from the same operating-system identity, container, DNS configuration, proxy, and credentials used by your application. A page that works on your workstation is not proof that the conversion host can fetch it.
Use Blink and wait for remote resources
Syncfusion’s troubleshooting guidance identifies a slow connection or conversion completing before the page has loaded as a common cause. Blink uses headless Chromium and is generally the appropriate rendering path for modern pages.
#1 Best Overall
Set AdditionalDelay
Set the delay before calling Convert. Syncfusion’s current troubleshooting example uses 4,000 milliseconds; its Blink documentation also shows 2,000 milliseconds as an example. The correct value depends on your image host, JavaScript, lazy loading, and network conditions.
using Syncfusion.HtmlConverter; using Syncfusion.Pdf; using System.IO;
var htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.Blink);
var settings = new BlinkConverterSettings
{
AdditionalDelay = 4000
};
htmlConverter.ConverterSettings = settings;
PdfDocument document = htmlConverter.Convert("https://example.com/page");
using var stream = new MemoryStream();
document.Save(stream);
File.WriteAllBytes("output.pdf", stream.ToArray());
document.Close(true);
Start with a modest delay and increase it only after observing the page’s real load time. A large fixed delay raises latency for every request, including pages whose images are already cached. For a production service, measure representative pages and choose a timeout policy that leaves enough time for slow image hosts without allowing hung requests indefinitely.
Do not confuse waiting with successful loading
AdditionalDelay cannot repair a blocked request, invalid certificate, 404 response, authentication failure, or incorrect URL. Use browser developer tools and server logs to distinguish “the request never started” from “the request started and failed.”
Give HTML strings a usable base URL
When you convert an HTML string, Syncfusion cannot infer where images/logo.png, stylesheets, scripts, and fonts live. Pass baseURL (the resource directory or URL) explicitly.
Rank #2
string html = @"<html>
<body>
<img src='images/logo.png' alt='Logo' />
</body>
</html>";
var htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.Blink);
htmlConverter.ConverterSettings = new BlinkConverterSettings
{
AdditionalDelay = 2000
};
// The base URL must contain the images directory (or its parent).
string baseUrl = "https://www.example.com/";
PdfDocument document = htmlConverter.Convert(html, baseUrl);
For local files, use a correctly formed file path or file URI accepted by the Syncfusion overload you are using. Check that the process account can read the directory. A wrong, empty, or unrelated base URL leaves relative paths unresolved even though the HTML looks correct in a browser.
Prefer absolute URLs when appropriate
Absolute URLs make the dependency explicit and simplify diagnostics, but they still require DNS, outbound firewall access, certificate trust, redirects, and any required authentication to work from the conversion host. Relative paths are useful for self-contained deployments only when the base URL is controlled and stable.
Verify access from the conversion host
Run the test from the same machine, container, or app-service worker that executes Syncfusion. Check all of the following:
- DNS resolves the page host and image host.
- Outbound HTTPS is allowed by the firewall, proxy, security group, or hosting plan.
- The image endpoint returns an image rather than a login page, consent page, JSON error, or redirect loop.
- Private images receive the required cookies, authorization headers, or signed query parameters.
- The server accepts the converter’s user agent and does not enforce hotlink protection against it.
- The certificate chain is trusted by the conversion machine, including intermediate certificates.
Chrome print preview is a useful comparison because Syncfusion specifically recommends confirming that the page renders there. It is not a substitute for testing the server-side network path: your desktop may have a different proxy, certificate store, IP allow-list, or login session.
Check offline mode and JavaScript rendering
Keep online resources online
Do not enable EnableOfflineMode for pages that depend on internet-hosted images. In offline mode the converter does not access internet resources; an online URL can therefore produce an empty PDF or omit network assets.
Allow client-rendered images
If a framework inserts the src attribute after page load, keep EnableJavaScript enabled in Blink settings. Lazy-loaded images may need a script, an explicit wait for a selector, or a page variant that renders the image immediately. A delay alone helps only after the code that creates the image has run.
For deterministic output, consider server-rendering the image element, replacing lazy-loading attributes with normal src values, or injecting a small script through the Blink settings. Validate that the script runs without browser APIs unavailable in headless Chromium.
HTTPS failures when using WebKit
If the application still uses WebKit and only HTTPS images disappear, missing OpenSSL assemblies can be the cause identified by Syncfusion support. Install the required OpenSSL assemblies for the target operating system and architecture, or migrate to Blink after validating its package and deployment requirements. Do not treat an HTTPS-only symptom as proof that the image URL is wrong; test the same URL with the selected rendering engine.
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 →Rank #4
Choose the engine deliberately
| Situation | Preferred check or fix |
|---|---|
| Modern CSS, JavaScript, lazy loading | Use Blink, enable JavaScript as needed, and add a measured delay. |
| WebKit with HTTPS-only failures | Check the required OpenSSL assemblies or move to Blink. |
| Simple static HTML and local assets | Verify the base URL and file permissions first. |
| Online URL converted in offline mode | Disable offline mode for that conversion. |
Make Blink work after deployment
A conversion that succeeds on a developer laptop can fail after publishing because Chromium cannot launch or cannot write its working files. Confirm that the deployment includes usable Blink binaries, or set BlinkPath explicitly when binaries are stored outside the application directory.
- The process account can execute the Chromium binary and its wrapper.
- On Linux containers,
chromeandchrome-wrapperhave executable permissions. - The configured temporary directory exists and is writable.
- Required system libraries and sandbox permissions are available.
- The hosting plan permits launching Chromium; some Azure environments impose restrictions.
- Bitness and native dependencies match the application and operating system.
Capture the converter’s startup error and operating-system event log. A missing executable, permission denial, or unwritable temporary path occurs before image fetching and will not be fixed by changing HTML.
A repeatable diagnostic sequence
- Save the exact input. Preserve the final HTML, image URLs, selected engine, and settings for a failing request.
- Open every image URL from the server. Test DNS, TLS, redirects, authentication, and response content from the conversion identity.
- Inspect URL resolution. Replace one relative source with an absolute URL or pass the correct base URL to the HTML-string overload.
- Confirm rendering mode. Use Blink for current web pages; if WebKit is retained, verify OpenSSL support for HTTPS.
- Disable offline mode. Ensure the converter is permitted to fetch network resources.
- Enable JavaScript where required. Check whether the image is created only after script execution.
- Add a measured delay. Start at 2,000–4,000 ms, then tune using real page-load observations.
- Reproduce in the published environment. Check Blink path, executable bits, temporary storage, native libraries, and hosting restrictions.
- Reduce the case. Convert a page containing one known-public image, then add redirects, authentication, scripts, and lazy loading one at a time.
Common symptoms, causes, and fixes
| Symptom | Likely cause | Action |
|---|---|---|
| Works in Chrome, missing in PDF | Conversion ends before remote image load or server cannot reach it | Test from the conversion host and set AdditionalDelay. |
| All relative images are missing | No valid base URL | Pass the directory or URL that contains the resources. |
| Only JavaScript-created images are missing | Scripts disabled or capture occurs too early | Enable JavaScript, wait for rendering, or inject deterministic markup. |
| Online page becomes empty in PDF | EnableOfflineMode blocks network access |
Disable offline mode. |
| Only HTTPS images fail under WebKit | OpenSSL assemblies unavailable | Install the required assemblies or use Blink. |
| Everything fails after deployment | Chromium permissions, path, temp storage, or hosting restrictions | Fix Blink deployment and launch prerequisites before debugging URLs. |
Or skip the browser setup
If your goal is a clean image of a URL rather than a Syncfusion PDF pipeline, ScreenshotNeo provides a website screenshot API and MCP server. One request can return PNG, JPEG, or WebP; it accepts consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing result.
Here is the one-call cURL example (see the ScreenshotNeo API documentation for parameters):
Free tools Windows power users keep installed
One-click scans. No signup required.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
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)
Node.js
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 offers an MCP server with take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. It supports full-page and element captures, device presets, custom viewports, retina scale, PDF controls, custom CSS and JavaScript, clicks, selector waits, network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, and a usage API. Every feature is on every plan: 1,000 screenshots per month are free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Best Value
Cost, reliability, and operational notes
For Syncfusion, the main cost of increasing AdditionalDelay is request latency and the number of concurrent converter processes your infrastructure must support. Cache stable images where your application can do so safely, but do not cache private or rapidly changing assets unintentionally. Log the source URL, engine, base URL, delay, HTTP status where available, and deployment identity, while excluding credentials and sensitive cookies.
For either approach, design for failure: set an overall conversion timeout, return a clear error when a required image cannot be loaded, and retain a diagnostic PDF or HTML snapshot for failed jobs. A successful PDF with a missing optional image should be distinguishable from a failed conversion.
Frequently Asked Questions
Does increasing AdditionalDelay guarantee that images will appear?
No. It only gives pending work more time. The URL must still be reachable, certificates trusted, authentication valid, and JavaScript or offline settings correctly configured.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Should I convert an image to base64 to avoid network problems?
Inlining a small, non-sensitive image as a data URI removes its network dependency, but it increases HTML size and memory use. It is an alternative for controlled assets, not a fix for inaccessible protected URLs.
Why do images work locally but fail in Azure or a container?
The published environment may lack outbound access, Chromium dependencies, executable permissions, writable temporary storage, or permission to launch Blink. Reproduce the request inside that environment.
Can ScreenshotNeo create a PDF instead of an image?
Yes. Its MCP server includes capture_pdf, and the API supports PDF capture options described in its documentation.
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.
Recommended Free Tools




