PdfSharpCore/MigraDocCore how can add a background image

541 Views Asked by At

I want to create invoices with PdfSharpCore. that also works very well. I would like to add a background image for each page. Can someone help me here?

1

There are 1 best solutions below

0
On

With this code I can insert a background image after the document is created.

CreateDocument();

PdfDocumentRenderer renderer = new(true)
{
    Document = Pdf
};

if (!string.IsNullOrWhiteSpace(Invoice.BackgroundImage))
{
    renderer.PrepareRenderPages();
    int pages = renderer.DocumentRenderer.FormattedDocument.PageCount;
    var background = XImage.FromStream(() => {
        return System.IO.File.OpenRead(Invoice.BackgroundImage);
    });
    for (int i = 1; i <= pages; ++i)
    {
        PageInfo pageInfo = renderer.DocumentRenderer.FormattedDocument.GetPageInfo(i);

        PdfPage page = renderer.PdfDocument.AddPage();
        var gfx = XGraphics.FromPdfPage(page, XPageDirection.Downwards);
        gfx.DrawImage(background, 0, 0, pageInfo.Width, pageInfo.Height);
        renderer.DocumentRenderer.RenderPage(gfx, i);
    }
}
else
    renderer.RenderDocument();
if (!string.IsNullOrEmpty(password))
    SetPassword(renderer, password);
renderer.PdfDocument.Save(filename);