.NET Standard 2.0 P/Invoke wrapper for wkhtmltopdf library that uses WebKit rendering engine to convert HTML pages to PDF.
Library can be installed through NuGet. Run command bellow from the package manager console:
PM> Install-Package DinkToPdf.Standard
On Linux or macOS install the wkhtmltopdf package on the OS.
https://www.nuget.org/packages/DinkToPdf.Standard
Use this converter in single threaded applications.
Create converter:
var converter = new BasicConverter(new PdfTools());
Use this converter in multi threaded applications and web servers. Conversion tasks are saved to blocking collection and executed on a single thread.
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4Plus,
},
Objects = {
new ObjectSettings() {
PagesCount = true,
HtmlContent = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In consectetur mauris eget ultrices iaculis. Ut odio viverra, molestie lectus nec, venenatis turpis.",
WebSettings = { DefaultEncoding = "utf-8" },
HeaderSettings = { FontSize = 9, Right = "Page [page] of [toPage]", Line = true, Spacing = 2.812 }
}
}
};
If Out property is empty string (defined in GlobalSettings) result is saved in byte array.
byte[] pdf = converter.Convert(doc);
If Out property is defined in document then file is saved to disk:
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins = new MarginSettings() { Top = 10 },
Out = @"C:\DinkToPdf\src\DinkToPdf.TestThreadSafe\test.pdf",
},
Objects = {
new ObjectSettings()
{
Page = "http://google.com/",
},
}
};
converter.Convert(doc);
Converter must be registered as singleton.
public void ConfigureServices(IServiceCollection services)
{
// Add converter to DI
services.AddSingleton<IConverter>(new SynchronizedConverter(new PdfTools()));
}