Hi! I have generated PDF from HTML using PDFSharp, all images are from stream
Code:
var pngBinaryDataLogoLeft = File.ReadAllBytes(folderPath + "logo.png");
var ImgDataURILogoLeft = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryDataLogoLeft);
html = html.Replace("[logoLeft]", ImgDataURILogoLeft);
var pngBinaryDataBGImg = File.ReadAllBytes(folderPath + "background.png");
var ImgDataURIBGImg = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryDataBGImg);
html = html.Replace("[BGImg]", ImgDataURIBGImg);
var config = new PdfGenerateConfig();
config.PageOrientation = PageOrientation.Landscape;
config.PageSize = PdfSharpPageSize.A4;
string cssStr = File.ReadAllText(folderPath + "1.css");
CssData css = PdfGenerator.ParseStyleSheet(cssStr);
PdfSharp.Pdf.PdfDocument pdf = PdfGenerator.GeneratePdf(html, config, css);
MemoryStream stream = new MemoryStream();
pdf.Save(stream, false);
byte[] bytes = stream.ToArray();
File.WriteAllBytes(folderPath + "document.pdf", bytes);
In my HTML the img get replaced by stream are working fine
Code:
<img class="logo-left" src="[logoLeft]" />
But the background image doesn't work:
Code:
<body style="background: url('[BGImg]')">
I don't have the image from a URL as it's from database (saved as stream)
I also tried to add the background image first to a new PDF page like below:
Code:
XGraphics gfx = XGraphics.FromPdfPage(pdf.Pages[0]);
XImage image = XImage.FromFile(bgImgPath);
gfx.DrawImage(image, x, y, width, height);
But then I couldn't add the content from HTML to the same page
If someone could please help thanks!!