Use this flow when you want PDF generation, preview creation, or adapter smoke tests without presenting interactive UI.
dotnet add package PrintingTools.Core
dotnet add package PrintingTools.Linux
The same pattern applies for PrintingTools.Windows or PrintingTools.MacOS.
using PrintingTools.Core;
using PrintingTools.Linux;
PrintServiceRegistry.Configure(new PrintingToolsOptions
{
AdapterFactory = () => new LinuxPrintAdapter(),
EnablePreview = true,
DiagnosticSink = evt =>
Console.WriteLine($"[{evt.Category}] {evt.Message}")
});
var manager = PrintServiceRegistry.EnsureManager();
var request = new PrintRequest(PrintDocument.FromVisual(printRoot))
{
Description = "CI validation run",
Options = new PrintOptions
{
ShowPrintDialog = false,
PdfOutputPath = "artifacts/output.pdf",
UseVectorRenderer = true
},
Ticket = PrintTicketModel.CreateDefault()
};
var session = await manager.RequestSessionAsync(request);
var preview = await manager.CreatePreviewAsync(session);
await manager.PrintAsync(session);
PdfOutputPath output.| Harness | Command |
|---|---|
| Windows | dotnet run -c Release --project samples/WindowsPrintHarness/WindowsPrintHarness.csproj -- --output=artifacts/windows/output.pdf --metrics=artifacts/windows/metrics.json --stress=3 |
| macOS | dotnet run -c Release --project samples/MacSandboxHarness/MacSandboxHarness.csproj -- --headless --output=artifacts/macos/output.pdf --metrics=artifacts/macos/metrics.json --stress=3 |
| Linux | GTK_USE_PORTAL=1 GIO_USE_PORTALS=1 dotnet run -c Release --project samples/LinuxSandboxHarness/LinuxSandboxHarness.csproj -- --print --output=artifacts/linux/output.pdf --metrics=artifacts/linux/metrics.json --stress=3 |