PrintedJs.HeadlessWebView
0.2.3
dotnet add package PrintedJs.HeadlessWebView --version 0.2.3
NuGet\Install-Package PrintedJs.HeadlessWebView -Version 0.2.3
<PackageReference Include="PrintedJs.HeadlessWebView" Version="0.2.3" />
<PackageVersion Include="PrintedJs.HeadlessWebView" Version="0.2.3" />
<PackageReference Include="PrintedJs.HeadlessWebView" />
paket add PrintedJs.HeadlessWebView --version 0.2.3
#r "nuget: PrintedJs.HeadlessWebView, 0.2.3"
#:package PrintedJs.HeadlessWebView@0.2.3
#addin nuget:?package=PrintedJs.HeadlessWebView&version=0.2.3
#tool nuget:?package=PrintedJs.HeadlessWebView&version=0.2.3
PrintedJs.HeadlessWebView
Cross-platform headless webview and vector PDF rendering runtime for .NET powered by Wry and OS-native web engines.
Features
- True Headless Rendering: Windowless rendering using WebView2 (Windows), WebKitGTK (Linux), or WKWebView (macOS).
- Direct-to-Vector PDF: High-fidelity PDF generation without rasterization artifacts.
- In-Memory & File Output: Generate in-memory
byte[]streams or atomic filesystem writes. - Async/Await: Modern
Task-based asynchronous API with cancellation support.
Usage
using PrintedJs.HeadlessWebView;
await using var webview = await HeadlessWebView.CreateAsync(new WebViewConfig
{
Html = "<h1>Hello from PrintedJS Headless WebView!</h1>"
});
byte[] pdfBytes = await webview.PrintToPdfAsync(new PdfPrintOptions
{
Landscape = false,
PageWidth = 8.27,
PageHeight = 11.69,
PrintBackground = true
});
await File.WriteAllBytesAsync("document.pdf", pdfBytes);
Linux & Docker Deployment
On Linux, PrintedJs.HeadlessWebView utilizes WebKitGTK and GTK 3. Because GTK requires an active display connection during initialization, headless environments (such as Docker containers or cloud VMs without an X/Wayland server) require a virtual framebuffer like Xvfb.
Required System Packages (Debian / Ubuntu)
Install the runtime dependencies and standard web fonts:
apt-get update && apt-get install -y --no-install-recommends \
libwebkit2gtk-4.1-0 \
libgtk-3-0 \
xvfb \
fontconfig \
fonts-liberation \
ca-certificates
Running in Docker
Wrap your application execution with xvfb-run -a or run Xvfb in the background.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
# Install WebKitGTK, GTK3, Xvfb, and system fonts
RUN apt-get update && apt-get install -y --no-install-recommends \
libwebkit2gtk-4.1-0 \
libgtk-3-0 \
xvfb \
fontconfig \
fonts-liberation \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Disable hardware GPU probe inside container
ENV WEBKIT_DISABLE_COMPOSITING_MODE=1
COPY ./publish .
# Run with virtual framebuffer
ENTRYPOINT ["xvfb-run", "-a", "dotnet", "YourApp.dll"]
License
MIT License © PrintedJS Contributors
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.