I tried running Syncfusion HTML to PDF converter in a .NET Core 2 API app running in a Linux container on Azure Web App for Containers.  I looked at the documentation and multiple blog posts and each one had a slightly different recipe and of course, none of them worked.  Finally, after a couple of frustrating days, I was able to make it work.  So here's my recipe without any guarantee that it will work in the future with different versions of any of the required tools.

Step 1: create a .NET Core 2.1 API project

Step 2: update all NuGet packages

Step 3: install the Syncfusion.HtmlToPdfConverter.QtWebKit.Net.Core NuGet package

Step 4: locate the converter location.  Usually, it's installed in the Windows user folder:


Step 5: copy the QtBinariesLinux folder at the root of your project in Visual Studio.

Step 6: mark all files in QtBinariesLinux as Copy Always for the Copy to Output Directory setting.

Step 7: edit the Dockerfile, paste this between the first 2 lines: 

RUN apt-get update && apt-get -y install xvfb && apt-get -y install fontconfig && apt-get -y install libssl1.0-dev && apt-get -y install libx11-dev libx11-xcb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xfixes0-dev libxcb-xkb-dev libxcb1-dev libxfixes-dev libxrandr-dev libxrender-dev

 Step 8: add a new method returning a PDF from a URL

public ActionResult GetPdf(string url)
    if (string.IsNullOrEmpty(url))
        return new NotFoundResult();

    //Initialize HTML to PDF converter 
    HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
    WebKitConverterSettings settings = new WebKitConverterSettings();

    //Set WebKit path
    settings.WebKitPath = "QtBinariesLinux";

    //Assign WebKit settings to HTML converter
    htmlConverter.ConverterSettings = settings;

    //Convert URL to PDF
    PdfDocument document = htmlConverter.Convert(url);

    MemoryStream stream = new MemoryStream();

    return File(stream.ToArray(), System.Net.Mime.MediaTypeNames.Application.Pdf, "azureacademynopcommerce.pdf");

Step 9: publish the container to Docker Hub

Step 10: create a new Web App for Containers app in Azure and reference the container.

That's it!  Simple enough isn't it?  But the Syncfusion doc and blogs each had different versions of the Linux packages to install or DLLs to reference or install.

BTW, do you know that Syncfusion offers a free community license to companies and individuals with less than $1 million USD in annual gross revenue and 5 or fewer developers?