Skip to content

Latest commit

 

History

History
107 lines (77 loc) · 4.22 KB

File metadata and controls

107 lines (77 loc) · 4.22 KB

Gotenberg Sharp API Client

NuGet version Downloads Build status

.NET C# client for Gotenberg v7 & v8 — a Docker-powered stateless API for converting & merging HTML, Markdown, and Office documents to PDF. Includes a configurable Polly retry policy with exponential backoff.

Features

  • HTML/URL to PDF with Chromium (page properties, headers/footers, cookies, wait conditions)
  • Screenshots of HTML or URLs as PNG, JPEG, or WebP
  • Office to PDF via LibreOffice (100+ formats, image compression, watermarks)
  • PDF Manipulation — merge, flatten, rotate, split, encrypt, watermark, stamp
  • PDF/A & PDF/UA compliance, metadata read/write
  • Webhooks for async PDF generation
  • DI-Ready with Polly retry policies

Quick Start

docker run --rm -p 3000:3000 gotenberg/gotenberg:latest
dotnet add package Gotenberg.Sharp.Api.Client
// Startup.cs
services.AddOptions<GotenbergSharpClientOptions>()
    .Bind(Configuration.GetSection("GotenbergSharpClient"));
services.AddGotenbergSharpClient();

HTML to PDF

var builder = new HtmlRequestBuilder()
    .AddDocument(doc => doc.SetBody("<html><body><h1>Hello PDF!</h1></body></html>"))
    .WithPageProperties(pp => pp.UseChromeDefaults());

var result = await sharpClient.HtmlToPdfAsync(builder);

Screenshot

var builder = new ScreenshotHtmlRequestBuilder()
    .AddDocument(doc => doc.SetBody("<html><body><h1>Screenshot!</h1></body></html>"))
    .WithScreenshotProperties(p => p.SetSize(1280, 720).SetFormat(ScreenshotFormat.Png));

var imageStream = await sharpClient.ScreenshotHtmlAsync(builder);

Office to PDF

var builder = new MergeOfficeBuilder()
    .WithAsyncAssets(async a => a.AddItems(await GetDocsAsync(sourceDir)))
    .SetLibreOfficeOptions(o => o.SetQuality(85).SetExportBookmarks())
    .SetPdfOutputOptions(o => o.SetPdfFormat(PdfFormat.A2b));

var result = await sharpClient.MergeOfficeDocsAsync(builder);

PDF Operations

// Rotate
using var rotated = await sharpClient.ExecutePdfEngineAsync(
    PdfEngineBuilders.Rotate(90).WithPdfs(a => a.AddItem("doc.pdf", bytes)));

// Encrypt
using var encrypted = await sharpClient.ExecutePdfEngineAsync(
    PdfEngineBuilders.Encrypt("reader123", "admin456").WithPdfs(a => a.AddItem("doc.pdf", bytes)));

// Watermark (inline, on any conversion)
var builder = new HtmlRequestBuilder()
    .AddDocument(doc => doc.SetBody(html))
    .SetWatermarkOptions(w => w.SetTextWatermark("DRAFT"));

Documentation

See the full documentation for:

Examples

See the examples folder for complete working console applications.

Release History

See CHANGES.MD for the full release history.

License

Apache 2.0