Fair warning: This post is a bit of an essay-sized question... So let me say my thanks beforehand to whoever goes through it and tries to answer it.
Context:
I have been trying the only 2 free-commercial-use open-source html to pdf converting libraries I could find.
PDFSharp unfortunately outputs a pdf with a completely messy style layout that doesn't respect the formatting of the input HTML and sometimes doesn't output images properly. (How it should've look vs how it looks with PDF#)
TuesPechkin (wkhtmltopdf c# wrapper library) on the other hand does it all right except for only outputting these odd "image containers" (a hollow outline of where the image supposedly should be).
I declare the IConverter object upon calling my class' constructor like so:
converter = new ThreadSafeConverter( new RemotingToolset<PdfToolset>( new Win64EmbeddedDeployment( new TempFolderDeployment())));
Then I have the following method where you can find the GlobalSettings and ObjectSettings I'm currently using for the conversion.
/// <summary>
/// Method for converting an .EML's HTML Body to a PDF
/// </summary>
/// <param name="html">The HTML to be converted</param>
/// <param name="usern">Optional: Username for file naming</param>
/// <param name="idx">Optional: Index for file naming</param>
public void Convert2PDF(string html, string usern = null, int? idx = null)
{
string userName = usern ?? "test";
var document = new HtmlToPdfDocument
{
GlobalSettings =
{
ProduceOutline = true,
DocumentTitle = userName.Split('@')[0] "__" idx.Value.ToString(),
PaperSize = PaperKind.A4,
Margins =
{
Left = 6,
Top = 4,
Right = 6,
Bottom = 8,
Unit = Unit.Millimeters
},
UseCompression = false
},
Objects =
{
new ObjectSettings { HtmlText = html,
WebSettings = new WebSettings
{
EnableIntelligentShrinking = false,
DefaultEncoding = "UTF-8",
LoadImages = true,
PrintBackground = true,
},
FooterSettings = new FooterSettings{CenterText = "[page]"},
}
}
};
byte[] bolb = converter.Convert(document);
File.WriteAllBytes(Path.Combine(mailBoxDirPath, ".PDFs", userName.Split('@')[0] "__" idx.Value.ToString() "__with_TuesPechkin__" ".pdf"), bolb);
/* ↑ TuesPechkin */
/* ↓ PdfSharp */
byte[] blob = null;
using(MemoryStream ms = new MemoryStream())
{
PdfDocument pdf = PdfGenerator.GeneratePdf(html,PageSize.A4,/*margin from border to content ==*/ 0);
pdf.Save(ms);
blob = ms.ToArray();
}
userName = usern ?? "test";
File.WriteAllBytes(Path.Combine(mailBoxDirPath, ".PDFs", userName.Split('@')[0] "__" idx.Value.ToString() "__with_PDF#__" ".pdf"), blob);
}
This "HTML" string is obtained from the output of another library I'm using called "MailKit/MimeKit" made by "Jstedfast".
I take this output and insert my own kind of "formatted header with some of the email's info" while also switching the image's CID every time there's one, with the following code that uses MailKit/MimeKit's tools:
...
foreach (MimePart part in temp.BodyParts)
{
if (!part.IsAttachment && part.ContentId != null)
{
using (Stream stream = new MemoryStream())
{
part.Content.WriteTo(stream);
stream.Flush();
stream.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(stream))
{
string cid = string.Format("src=\"cid:{0}", part.ContentId);
string data = string.Format("src=\"data:{0}/{1};{2},\n{3}", part.ContentType.MediaType, part.ContentType.MediaSubtype, part.ContentTransferEncoding, sr.ReadToEnd());
rValue.Replace(cid, data);
}
}
}
}
...
Side note: "temp" would be my MimeMessage.
And here would be the whole string-building process for reference. I usually test these outputs on HTML previewers, and they come out without any issues in formatting or image display, so I know the issue isn't my HTML input when trying to convert to PDF:
...
MimeMessage temp = emp.Pop3.GetMessage(idx);
StringBuilder rValue = new StringBuilder(null);
Regex bodyTag = new Regex(@"^<body.*>$");
Regex charset = new Regex("charset=(.*)\"");
string body = string.Empty, condHelper = string.Empty;
List<string> tempBody = temp.HtmlBody.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList<string>();
int tempidx = 0;
foreach (string line in tempBody) // Looks-up this HTML's charset and sets it to utf-8
{
if(charset.IsMatch(line))
{
condHelper = charset.Match(line).Value;
tempidx = tempBody.IndexOf(line);
tempBody[tempidx] = line.Replace(condHelper, "charset=utf-8\"");
break;
}
}
foreach(string line in tempBody) //Looks up the index of the body tag so I append that "custom header" with basic info from the email
{
if (bodyTag.IsMatch(line))
{
tempidx = tempBody.IndexOf(line);
break;
}
}
string line4change = tempBody[tempidx];
line4change = emp.HeaderBuilder(temp.Subject, temp.From.Mailboxes.First(), temp.To.Mailboxes.ToList<MailboxAddress>(), temp.Date.DateTime, temp.Cc.Mailboxes.ToList<MailboxAddress>());
tempBody[tempidx] = line4change;
for (int i = 0; i < tempBody.Count; i ) // starts building the final version of the whole html string
body = tempBody[i] Environment.NewLine;
rValue.Append(body);
foreach (MimePart part in temp.BodyParts)
{
if (!part.IsAttachment && part.ContentId != null)
{
using (Stream stream = new MemoryStream())
{
part.Content.WriteTo(stream);
stream.Flush();
stream.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(stream))
{
string cid = string.Format("src=\"cid:{0}", part.ContentId);
string data = string.Format("src=\"data:{0}/{1};{2},\n{3}", part.ContentType.MediaType, part.ContentType.MediaSubtype, part.ContentTransferEncoding, sr.ReadToEnd());
rValue.Replace(cid, data);
}
}
}
}
try
{
emp.Convert2PDF(rValue.ToString(), emp.User, idx);
}
catch { }
...
So, my objective is to fix the odd output of these hollow image containers on the outputted PDF file.
Edit: Here's an example of an HTML string taken directly from the debugger right before it gets sent to the "Convert2PDF" method:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="margin-top:24px;"></div>
<span style="font-family: Segoe UI; font-size: 16; font-weight: bold; "> t est</span><br>
<span><hr style="height: 4px; border: none; margin-top: 2px; margin-bottom: 12px; color:#000; background-color:#000;" /></span>
<table style="margin-bottom:32px; " cellspacing="0" cellpadding="4">
<tr>
<td style="margin-left: auto; padding-right: 128px; white-space: nowrap;"><span style="font-family: Segoe UI; font-size: 14; font-weight: bold; "> From:</span></td>
<td style="white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14;">tester[REDACTED]@outlook.com</span></td>
<td style="width:99%; "></td>
</tr>
<tr style="background-color:#f2f2f2;">
<td style="margin-left: auto; padding-right: 128px; white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14; font-weight: bold;"> Sent:</span></td>
<td style="white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14; ">Monday, 11th of October 2021, 08:52:49</span></td>
<td style="width:99%; "></td>
</tr>
<tr>
<td style="margin-left: auto; padding-right: 128px; white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14; font-weight: bold;"> To:</span></td>
<td style="white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14;">[REDACTED]</span></td>
<td style="width:99%; "></td>
</tr>
<tr style="background-color:#f2f2f2;">
<td style="margin-left: auto; padding-right: 128px; white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14; font-weight: bold;"> Subject:</span></td>
<td style="white-space: nowrap;"><span style="font-family:Segoe UI; font-size: 14;">Testing TuesPechkin Library w/Images</span></td>
<td style="width:99%; "></td>
</tr>
</table>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
1st Inline image:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<img style="width: 187px; height: 221px; max-width: 100%;" size="7198" contenttype="image/png" width="187" height="221" alt="key points of an email" data-outlook-trace="F:1|T:1" src="data:image/png;Base64,
iVBORw0KGgoAAAANSUhEUgAAALsAAADdCAIAAABsX5R6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABuzSURBVHhe7Z15WBPHH4edDQEUKYfiUbxaLR54
IYhWi1b9WfHASr1QPKpQarVaLZaqQERQPEFr1QpKq8UDq CBgE8Vigoo0gcRQfABRX0QCo8ID8JD
8pA8/HJsktlNAlnZmCDf9682k91E5s3szOzOZzo0AQATwBiAGWAMwAwwBmAGGAMwA4wBmAHGAMwA
YwBmgDEAM8AYgBksGSMqP XlOKJlnHxiXpGHAG0Ttox5vn icYeWMZ5yqIw8BGibgDEAM8AYgBk6
MoY7dNm I2qIuJJXTx4CtE10ZIzJtKOVZBHwfqE3Y0Q1T7LSbitIf1DaIH61vjjpwMbl7tOnzVgU
lsGXvVMBv zfy5E7Nvp4fuXmOnXqtJnui7x DP4t7t5L htlqP EpqY3xdeP8tZ8Pd9t gz3JWtD
Tqa/FEhfl9JYkX0hfNM3Hl Kv8IcD 9NBy4 rBaRZTiiurJH/97LeVrVSL7QbtCbMfwb3/XhkO8W
wx0T qgyNWCsFYFkL5jMPvGGfKv49JUZh73H25qSZVSQqe1nPhH3XtMrVvUTCuqKzq0b151LOQ3i
WDv/lFguPrqhIPqbUVYc6ocg496zwrOUX0VMQ17U8uGWRpL3oY59poXcrFLn1PuKwRjjHPCbT39p
LchQGtOQf3zhAPWyKEFm9t7nnwllR8igf8LodTsW9qPaIofoNud4xunFGkoRd/D6VIUzoueHp3bG
3oe49psysVbqfUdXPd/xvJQsFbIfVygacVp9Gn08dJAZXl kMaLKq9/aGbegiwxk7hyUifWraZ A
jE00nwcRnT/oTJD/owph9VW0/BcgSN840Ih8XQqyXPhXO rO68gY9RhPOlgqb8Bp9UmCkLHlh316
2XTmmkqNqU/9wQ7/4SOjbmN9wmNv5TzKz049t2elo7X8KiYBdZ4YVqhoZ1Q/gbB09D6clJX/MCN2
x5yPTej ILMhnuHx9/LExaHu/SnFRPcV8bJeUFNTXQrlOxE27icU/6p2gAEZgzqP8Dpxv0pa48Kq
R49eCptexyzogv3ykZkz7y6lS1GdvG4wbpTRkJ/vyq8Q9E8gbOb88UJRtbVJPv0on09YTD7wWNEE
1iWv6Y 3JMYTwkoUx/KLYgMWuAyzsxs6dva6yEyVHtR7jcEYg8wnhhVQ iHiHkz8ih6YMETP5Rdr
ySI5opIDk/A DnfMDvlZaJ9A2CyJw22rv7DYGrfRcu7parJIQsPVlfhncx14Oe1uWKQWHRmDEEcN
Haf8qskYZD77D/o9SmHRrk 5ZLkYZOb2x2uySIkg3RfvVhDdll8mLx 0T COCsrF61yQug5vRbhD
t2RRijM32VOKN98DYyToyBjmYyVahUkQ3PlpMFZpHNtvklRnXoSFO8fiWnV0jya7ofRPEI u8TZM
cGv9AFyJUVsf4F gMct/GHZeMEaOwRijvJooENz1w40henolyHufShrzgh1xYz5YcA6M0SWGYwy1
PiUIn 77jNJ8uEZWkEVK Inetth5jD5Zf4vs oIxOsGQjWniX/Pphb2H6DL/bBVZJEeQsXEQVu/I
wj1a3tcBY3SCQRvT9ObKig xNyHjIasT/8PGsg25YVPwAQ9hOeeEolyHxjSW3z21e/P6db5bjyQ
pgz3338M25gmQRZvFGUqDZn2mbjCf9/RqKgju3znjbTG7it0QNyB61PryCN1Z4yw6Li7rWISiLAc
G5Sh/ND3HwM3RtzMpAc4mePOaAJ1GuGbjM o6MiYxvuBI7ACsTPdv76i2iN/bzF4Y8S/6dIrG0bT
bylTQYSl4/ex1BuROjPm4TZ8cCYe9X/olaj eYv3kjZgjISG4vjtnmNsO J3kaQgoqOt8 Lgy49V
7wXqyJgm0YuY5Yp76YhjM3nf/XYkDFvGvBuE1cVpl04e2hPM89/izwvec jk5bTi6mZE0xWi17kX
D2/nBYYcOHsHfx6rPdCmjAEMADAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGWAMwAwwBmAGGAMw
A4wBmAHGAMwAYwBmgDEAM8AYgBlgDMAMHRkjaqgszk5LuRZ/MTb2UnxSSkZOUUV9u4pAeG9h2Zja
giv71nw5up8lF6k8kcu16D3yi5WHM9vRc/fvI wZIypP3ja9b0vpYyaukQYUMy949aSkXYXYsQBb
xlSn/uyIp8NpwhCMaSjLjo8MXv3V E sTJThIYB2sGNMQ7qfPT11EBmZ2w52Gj/BZazj0I 6diTX
G nbGFHlSXcr5UJKLG4G0A5WjKm/6oUvjxZ3Wfq47fy7BF9CJHiVlxThv3hsvzl6Nqbs0BRsYRUY
wxg2jGnMDRqFrxIkbDzOqYZJyXhTU6OH9UVKwJjWwoYxtNWFHTi9fa4xrwbR64LrJ3dt9PacO2va
tOlzPLx9Q6P LqxR6ZdqiAIXvMw4tXPD8rkzXV3d5i5bG/x76nPKSkVRRX665P3xfs6Y3YTVrL0p
0vPcTrtXrEgHb7 J4C2jizamA2Hpsi0DXzTfAqKKW/uXOnal94Qkl7euTt7HcyhxiWoWx9bm/f71
MAvqCltEfDDi2/Mliiqv/cPNhCxSjzw0TTURXHYCQAYr/ZiGBC88J0oC0Xmge1BcAT0aUw38wpNL
BnZSkUUB4nSdvDdb2SeiGzP6h1CPvqqySSAsJu2Xr7XW0hh1ieCyEwAyWDGmiZ/uN0RNpSGujcPc
TVFppZpXslffWG Pz GgjrYOk2e4ugyxwQK kalDQKb8HDRjkGnHZuaAjPqvS5UdqKUx6hLBpccD
JOwYI675f/wcNM3HoE59J689drdSdaqMn7lluNIMZGQ758gDWeST6HU6b5yFIn6K6DLvNDnGohkj
BnUaOD/0QnpufvaN42s/xSOjJZkMZIanIDua5y9mw0w8kxWZOSzaJHnZ3z9w98UicXukJhFc rEA
CVvGSGJeEn526YZnRlFAxraTA5LKKAMlamgZ0cMjpgKzqj7Jp7eilLCcd0bWM6IbQ1hP/ 2J4rSi
0mOzLPFg587up/DYMS3GSu06Ebxl2DNGgqA0ee8yp 6adoxAnexXxytz7PjXV2F1z7H1TqRWXlXk
dGWimdFA33Rp7gbNGKL78kt4qJioIsIVv0zR9hmE0XVrYdcYGW Kkg6unTFINt6gwem1LO6VzBnR
s/AJWOVxujnO9qCwwAXr0RKWiy5I65be83UMzqOMgRuuruyJx8O7hJWQJRLAmNaiC2NkCKtyzvrP
GkDZAkcMMpt6pFT6BlqOewugTu6npQMmujH0cCtapCvXZd9TskQCGNNadGeMFHEHNuRzal U6LL0
orSMFsXbAmJjToExBoCOjRHTmMNzoMzvmcyMkhYIH20fjRVwbKeu2xaskZCdfz2UXn3AGP3ChjHC
gkPffn 6QDW7UIqwaPc43BhkPu srKTuLw8rZfNDdFl4Tpt54lYaU34YNwZZLjoPxjCCFWPyQ5y4
hMWg2Zv zCynTda9yYta BFlco87IvC rExUFjkDi pFZmNo 22ppXXGNFVHzcQjpY3slVt4yWnP
ieAtw5oxsgpAXIuPnF3nLfVe88MPq1fOnzKsG21vPWQ8MjBbMbapuuDZE6tdxLEetSQk kbO0/ q
a2telZc8TE IDvdb8rmL73WFia00hp9IezLDbKC7/8FjEQdC98QWiL YmkRw8khACsvGtAAytluV
gD8mKXxyzK0bpWOsDk4vn2tsGSOqjHbHroVKZHcJ1CWCk0cCUt6hMaiT3aJjefTejqgqlTfBptlE
cFaNEXefbvsNU3MrijRGTSI4eRwghQ1jmuryz29d rmdlZqbkRIQx7zveM g83k15Pvp8J8m7PAc
3VPdHUVEdOzh4O5/qURhRauNEb l8Mx3zja0b0s 7aAmEZw8CpDCijEkwpqS7JTLpyP279oeFOjv
zwvasfuXYzEJafn/aTUcaawqvBn3 y87gwK3bAngBYeGHfkzLvl aZ1u7uuIaotvnY/YFyKJHw8M
Cg2POHOjgHyiqj0ngrcMm8YA7QEwBmAGGAMwA4wBmAHGAMwAYwBmgDEAM8AYgBlgDMAMMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzCj1cY0PgibM2oEU0a57VGuWgLaEq02RiUG
TCuMBqy/Bc9ct0nAGIAZYAzAjFYbI/ov4 zRI1R2Lx6EryvkDlq8myyRc/R0Wplu1iEBOqbVxqhB
VHpwEpa40cF40sFS0ON9wZCM4Zf9ezlyx0Yfz6/cXKdOnTbTfZHXj8G/xd17SUsYwYA4 HeOYRgj
qsw47D3eVn2UMzK1/cwn4p5KSirEwesFAzCmIf/4QsXaeE0gM3vv88 wJfkQB68n9G2MqPLqt3aa
8n pIHPnoExFmAjEwesJPRtTn0rJdO AjLqN9QmPvZXzKD879dyelY7W I4mqPPEsEJ5OwNx8PpB
v8a8jlmAR7ciM2daEl518rrBuFFGQ7DYOoiD1wd6NaYhfkUPTBii5/KL9O11RCUHJuF9HO6YHdSA
IeAdo09jhEW7PsVm pCZ2x qmwUK0n3x/goE8OobfRojuPPTYEwGMlaMhrBw51hcq47u0RqCg4F3
gl6NueuHG0P09EpQbT4a84LxKEP0wYJzYIw 0etV6em zyjNh2tkBVmkhJ/oje8oaPQJ3MLUL3rt
dJiMYku88/S521p210gC/doTRsjA 8EvRpD28StAzIesjpRuWOXeDCVGzbFGh9NWc45gZVDHLwe
0K8xTYIs3ihKDj0y7TNxhf o1FRR3b5zhtpje/qhbgD16cq9muDOHj9oGdjxM1MeoATtp2FZlCn
Eb7Jys1RIA5eT jdGHFjUXplw2irZnPmEWHp H0sfiMS4uD1hQEYI6GhOH675xjbjtR98cUgoqOt
8 Lgy49VhtQQB68fdGHMWyOsLk67dPLQnmBJ9DsveM hk5fTiqs13xSAOHg9YFDGAG0AMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGWAMwAww
BmCGro1prCl9dC/1WvyluLhL8YnXb2XlP6vSHGsHGD46MkZQnnlqm9d0h17m IIjKYgwtvzIcdbG
80/J9wJtCvaNaXxxbbv7oA9UVgVQMbLbcJs8AGhTsGuMqCotdOqHeKiUJsCYtgqbxtTeDXGxwlZJ
NwcY01ZhzRhRxWWv/vTWBXG7Oy3w3XPy6s3MB48KHz3Iup0YE7HT13OSXddBYEzbhC1jaq vHkDt
5CKzwUsj71erXwwpqi0vp0feAW0CdowRPv1lMh7H3AGZDFoVj d6aIvozdNbMb/w1q1cOGfGtKn/
2LGl/OXr94SdjrtOR5fBeHy oMVY4T520fjFyTEtVuXwjjPhf8kftvcYdbq 83GUw6Rm6VAuLx
YcMY0bP9E/HYb2Q6IayYWYSqqDIl0KVrM/kOxpN/fSkxBsLl9Q0bxjTELcFznDtwR4fkMxKGnxs2
CY iUoPcGAiX1zcsGCN6Fj4RD/8grBbHMoncFRaGf/4BpXUhPhg42/fghX y8grys29ePBqw2LHX
NJkxEC6vb1gwpjGH54Bn/3D6fneDwa0j/s11A/BWg7CeFJpZQxbKEVaWlsvPCeHyeoUNY2j5YpwP
vRK0N0aQ9qMdHqZpNjHsMcTIGzAsGCMs3jMeNwaZukao5vJqQPTy18lYrxmZTDr4AhoNQ4aNnm9d
zHwLvB9C9Fh2SduxdWPWlqGYbkRPr6uw7YBBw4YxwoIdYyghhkQX95Pl2rUUggzK2IfosTIejDFo
2DCG3lBIZkn6r7yk1ZSv8NF2Z xQZOwS9hS6MYYMK8aI633np7SdHgnL0T/Gv9BQ cKKu1dSS6T/
WX9xqQ02FYNMnLblQAiiAcOOMU1Nr6949aVP2SJu11GLtp64nlfBlzU3ovqy3OTTe9bMsrc2UTzt
8DpmYVd89g51dlgb/4J6w0jwIvV6tuLOJYTL6xO2jJE87eA9QMMWoYjgmllaWXTiKh/Mw56PaUj3
G0o9EBlZDZ21ihf22/GoyAPB6xeO72NmQs75Qri8vmHNGDH1Ob/OUlZm81CeqKq5 bODWfPHye8S
QLi8vmHTGDH8ovPrx3fXwhraM3jC53HfO1o282ywwhgIl9czLBsjQfQqKzpg0bi 5upvRSPCtPtw
11UHb1eS75dTVxDLmzvCRo1uyKS7s9812Z0DCJfXMzowRo64m/tP3InDe7dvDdyyeUsAL2T3gYhT
l2/mvqxrbtjN/y/3RkxE2Hae/ bN/ryQvYdPXrpdSH1yCsLl9YkOjQHeS8AYgBlgDMAMMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGToyRtRQ
WZydlnIt/mJs7KX4pJSMnKKK uYe1mSK4E7I1OH2CkYuOlbCYCllw O4rUu/GOvoOM51xY6EEnjy
kwEsG1NbcGXfmi9H97PkIvoD3ohr0XvkFysPZ7Kyrpp/47s HPLMYrhjQgu0NqY6wedj5fPnyMT
p9uw1ltr2DNGVJ68bXpf2lpaFUxcI1 RB7SKVhjDT17TDztUfPCIgGx9hnYKXj0pqWKzAdYpbBlT
nfqzIyWfVQMGYIywcPd4XGzUedpR2XrLd0pDWXZ8ZPDqr8Z/YmXSbfnlNtPKsWNMQ7qfPX2dETIy
tx3sNH6Cy1jHoR917UguXjIAY8TXzju7p/WSLdxFpn3dDvxbRxa8K0SVJ92tlIHZRLszpv6q14d4
O4 4fdx2/l1STxZLELzKS4rwXzy23xwDMEZC/cuc1Gt/38ot10dVicoOTcHCJtudMY25QaPwla2E
jce512QZnTc1NcxqVgOtNkavtHdjBLfWU9IyOb19rmn3B6h7dj/ttoK07Ge0bI 659TyEkW5BmP4
LzNO7/JdMc9t2heubgu8ftoXc69cpVMrqnmShZ02/UGp m8rel1w/eSujd6ec2dNmzZ9joe3b2jU
34U1zXd5mo/JF1Xkp0s M94Pz1kirGbtTZF l9tp94qVWzkYZJi LtqYDoSly7aMarK0GRqz/Idh
B3KHbr5H ds0ZgcMx8qN7DdlyqdO1BhTff o5xD6TmCIYznS6 QjihJatE iilv7lzp2VV0Djrhd
nbyP56jdhUOLmPzaP9xMyBfUw7H9JkkaVGqwYfqs9GMaErxssSqQQHQe6B4UV9D8/iYsGuP07ZZZ
PTWk1CPuxytisVy lozhF55cMrCT nNJQJyuk/dm4700sWLaxeRra4wBh mzYkwTP91viLpMBq6N
w9xNUWmlGuJ92TMGGRmpbEiJw n3TaIiVbp5Y6pvrLenDL472jpMnuHqMsQGT5E1dQjIVP6rtI7J
19YYAw7TZ8cY8d/5Hz8HTfMxqFPfyWuP3a1U6QCwZ4wEwmrU13tjb fm56Zf2u/lRK1BZOH2uzzK
sTlj JlbhivNQEa2c448kHWeRK/TeeMsFCclusw7TY76GMTkC7Kjef5iNszsT4m9dli0SfKyv3/g
7otFki9juGH6bBkj/ruVJvzs0k3jLx0Z204OSCqjNP8sGoNMhq5PxgZoolfx3h/jX4awXBBDXiOb
MebNlRXYPAHRwyOmAvO8Psmnt6KUsJx3RtpXYxyTL/52WoyVDDVMnz1jJAhKk/cuc quIQ5P3NjY
r8b36WLPGMJyzgm8bsUI84KdsIM7cIf7/ysr0WwM//oqrIRj651IrciqyOkmin b0UDfdPHXeZuY
/PY uqbzpijp4NoZg2QdfRqcXsviXsmrlsWe77jd0sYch59ImVckenolkAWajBE9C5 AVSSnm Ns
DwoLXPoqLxWE5aILDW8Xkw/GqENYlXPWf9YAeiIiMpt6pJR8C3vGmLhGqEwlC9J98R8/0WVJnKxA
ozGCzE32lP5ms6BO7qfrxf Gt4jJB2M0Iu4uhnxO2a5LXHNLL5KlbBqjevOBeomRjkLIAo3GZGwc
xMiYU/VvF5MPxjQHffulDiYzo RF//pTjBj00x25EVIEd/wGY7XRjDHGE/c/o10LRGWH/6fsdIjF
GLX1gaxEozHCR9tHY9 HYzt13bZgjYTs/Oth49vF5Ld3Y4QFh779/nQBdUpLgbBo9zjcGGQ 7yxZ
RItaJaw8/qLcJqj83c0cq/Pmer5dF8ZQb2WJXkbOwHdkIbouiSNvUWs0pqnuLw9si3eiy8JzLc9c
v01Mvqj8MG4Mslx0vn0Zkx/ixCUsBs3e9GcmNoSU8iYvauFHlMk97ohARZ7qq8jp GQZYfPl788V
TcWbOwGOlJnXZozpgEyHb7ih6FKLh/rnl9EG1 5/yq9bmo0RlUXOwBxFZmN4d1uMsWcek9/UVB01
E2//jOx/vqtimYGG6bNmjOyfjrgWHzm7zlvqveaHH1avnD9lWDf8DyMGGY8MVD7w1kjvaqLOdrM2
7ImIigzf7OFgTZt0b84YMYS53cx1O387HnmA5 XSi/q5nL7fJCoqTLMx4vHzBc eWBniWI9aEhJ9
I fpf9W1Na/KSx6mJ0SH y353MX3uuK3wSwmXwptHCd2c6C7/8FjEQdC98QWSP48hhumz7IxLYCM
7VYl4A8oCjI3D1Vze0EG4lpZm2O/3haM0QzR3f2PZ8rORXPGNAmfHHPrRumqq4PTy ca1poyiMmX
IaqMdseuf0rIuwQGHKb/Do1BnewWHcuj9XZE5ReW91PrDGE9aWf0T1qOlYwGuEzorV49wtJ5UzLl
DkWzxoi/UlUqb4JNMzcVxdCMEf8NtI3Jl1N322 Ymoei5cYYbpg G8Y01eWf37r0czsrDa0F4pj3
He8ZdD6PPnUuoy73 IqR2DOMksbFeuTXkfdrBdrP4I3ZkfPwz28cu1BmDZFxj3HfHsuiT7C3YIwE
/tOEHZ6je6p7zh0RHXs4uPtfUl3tol1MvgJ 4ZnvnOnvJo0x4DB9VowhEdaUZKdcPh2xf9f2oEB/
f17Qjt2/HItJSMv/r8WBgKi6MOXM4V1BAYHBe4 cSSmqpVWylohqHqecObSTF8AL2fvrias5FSrd
SQn866uUt4fExozfU6xS 1Iaqwpvxv3 y86gwC1bAnjBoWFH/oxLvl/abEq NjH5SkS1xbfOR wL
4flv8Q8MCg2POHOjQP5ElYGG6bNpTFuhIdYTu7GNTGccM5SnldoC7dCYxgeUKUWj/utuGs4v2PBp
J8aIqvP/LZQOrxufxyzGezFE96VxhjPZ0QZoJ8YIC0LHdO5q5 ziPMCS0tc06r8m V2vVmrbtCNj
VCcAEMd2wenSt tkt1varzHIqNvEbbcM5tG2NkN76ceUnV892tZMOi2HOGYfjnBdFX7jOXR434J2
YowMYX3Vyxcvq rVz74AWtGujAFYAIwBmAHGAMwAYwBmgDEAM8AYgBlgDMAMMAZgQlPT/wHgbtxB
HbHjAAAAABJRU5ErkJggg==
"><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
2nd Inline image:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<img style="width: 100px; height: 100px; max-width: 100%;" size="967" contenttype="image/png" width="100" height="100" alt="2 dradients" data-outlook-trace="F:1|T:1" src="data:image/png;Base64,
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANcSURBVHhe7dzJS5RxHMfxb3u2u83q7pj7vhta
Zlbj7FMEBQURFBTUwUNBHTx48OLBg4eCOhQUFEREUBARERFERFppZWWWmeW tjc95 pub0PA68/
4Mfn8vBsbxlLcET8p8hYYYiMFYbIWGGIjBUGGbOnAw0nZgHJuD0NaDApD0gm7KlA/clFQDJpTwHq
SykDkilbMlBvajWQTNuSgLrTaoFkxpYE9CS9HsgYKxHokaMRSGZtCUAPMpxAMme1A93L9ALJvNUG
dCcrCCTfrFagW9m7gOS71Qp0I2cPkPywWICu5e4Dkp8WM9CVvANAxlgmoEv5h4DklyUe6ELBESD5
bYkDOld4DEj mOOAzhQ1A8lfcyxQZ8kJIAmZY4A6Sk8BGWNFA7WXtQBJyLQOqK28FcgYay1Qa0Ub
UGSsMEDHaqlsBzLGWgN0sqoDyBhrNdDx6k4gCcWvAmquOQ1kjLUS6OiGs0DGWCuADteeBzLGigI6
WHcRSEJxUUD7N14GMsZaDrR301UgY6xlQLvrrwMZYy0F2rn5JpAx1hIgf8NtIAnFLgZyb7kLBB1r
W N9IGOsRUANWx8CGWMtBKrb/hhIQjELgGqcT4GMsYgqmp4D6VNCFLteAulTQuS73wDpU0JkewaA
JBRN5PB AtKnhEjxfQHSp4RI8I8B6VNCmANTQPqUELE75oH0ZQgiLjgHBL03jA/OAkGflJqCM0DQ
94am4DQQ9CsadRmCgH6AawlMAkF/R7EGJoGgP2faAhNA0FSBPTAOJKMJDiB1UwYhqk0DkegfBRLV
poFI9I8AiWrTQCT5R4BEtWkgkn1fgUS1aSDUI0oIUW0aiFTfMJCoNg1Emu8zkKg2DUS6bwhIVJsG
wuEdAhLVpoFQL wgRLVpIDK8g0Ci2jQQ670fgUS1aSAyPR ARLVpILI8A0Ci2jQQ6vMVCFFtGogc
z3sgUW0aiBxPP5CoNg1ErvsdkKg2DUSe y2QqDYNhPqYE0JUmwaiwN0HJKpNA1Ho6gMS1aaBKHK9
BhKVW4Eodr0CEpVbgVC/NkCIyq1AlLh6gUTlViBKm3qAROVWIMqaeoBE5VYgypteAInKrUCoH/0g
ROVWICqdz4BE5VYgqpzdQKJyKxBVzi4gUbkViGpnF46z6x zRQbPWHJSYgAAAABJRU5ErkJggg==
"><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Stylized text:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="font-family: Georgia, serif; color: rgb(179, 106, 226);"><b><i><u><strike>S o m e T e x t</strike></u></i></b></span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="font-family: Georgia, serif; color: rgb(179, 106, 226);"><b><i><u><strike><br>
</strike></u></i></b></span></div>
</body>
</html>
I have been using the following site to test these HTML strings making sure their formatting and images are displaying correctly: https://www.onlinehtmleditor.net/
CodePudding user response:
I tested your HTML using NuGet package itext7.pdfhtml
and the images didn't show either. However after some investigation, I discovered an issue with the value in the src
property.
In the src
property value you have data:image/png;Base64
. It should be data:image/png;base64
- notice the lower-case b
for base64
.
After changing Base64
to base64
it seems to work.
<img style="width: 187px; height: 221px; max-width: 100%;" size="7198" contenttype="image/png" width="187" height="221" alt="key points of an email" data-outlook-trace="F:1|T:1" src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAALsAAADdCAIAAABsX5R6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABuzSURBVHhe7Z15WBPHH4edDQEUKYfiUbxaLR54
IYhWi1b9WfHASr1QPKpQarVaLZaqQERQPEFr1QpKq8UDq CBgE8Vigoo0gcRQfABRX0QCo8ID8JD
8pA8/HJsktlNAlnZmCDf9682k91E5s3szOzOZzo0AQATwBiAGWAMwAwwBmAGGAMwA4wBmAHGAMwA
YwBmgDEAM8AYgBksGSMqP XlOKJlnHxiXpGHAG0Ttox5vn icYeWMZ5yqIw8BGibgDEAM8AYgBk6
MoY7dNm I2qIuJJXTx4CtE10ZIzJtKOVZBHwfqE3Y0Q1T7LSbitIf1DaIH61vjjpwMbl7tOnzVgU
lsGXvVMBv zfy5E7Nvp4fuXmOnXqtJnui7x DP4t7t5L htlqP EpqY3xdeP8tZ8Pd9t gz3JWtD
Tqa/FEhfl9JYkX0hfNM3Hl Kv8IcD 9NBy4 rBaRZTiiurJH/97LeVrVSL7QbtCbMfwb3/XhkO8W
wx0T qgyNWCsFYFkL5jMPvGGfKv49JUZh73H25qSZVSQqe1nPhH3XtMrVvUTCuqKzq0b151LOQ3i
WDv/lFguPrqhIPqbUVYc6ocg496zwrOUX0VMQ17U8uGWRpL3oY59poXcrFLn1PuKwRjjHPCbT39p
LchQGtOQf3zhAPWyKEFm9t7nnwllR8igf8LodTsW9qPaIofoNud4xunFGkoRd/D6VIUzoueHp3bG
3oe49psysVbqfUdXPd/xvJQsFbIfVygacVp9Gn08dJAZXl kMaLKq9/aGbegiwxk7hyUifWraZ A
jE00nwcRnT/oTJD/owph9VW0/BcgSN840Ih8XQqyXPhXO rO68gY9RhPOlgqb8Bp9UmCkLHlh316
2XTmmkqNqU/9wQ7/4SOjbmN9wmNv5TzKz049t2elo7X8KiYBdZ4YVqhoZ1Q/gbB09D6clJX/MCN2
x5yPTej ILMhnuHx9/LExaHu/SnFRPcV8bJeUFNTXQrlOxE27icU/6p2gAEZgzqP8Dpxv0pa48Kq
R49eCptexyzogv3ykZkz7y6lS1GdvG4wbpTRkJ/vyq8Q9E8gbOb88UJRtbVJPv0on09YTD7wWNEE
1iWv6Y 3JMYTwkoUx/KLYgMWuAyzsxs6dva6yEyVHtR7jcEYg8wnhhVQ iHiHkz8ih6YMETP5Rdr
ySI5opIDk/A DnfMDvlZaJ9A2CyJw22rv7DYGrfRcu7parJIQsPVlfhncx14Oe1uWKQWHRmDEEcN
Haf8qskYZD77D/o9SmHRrk 5ZLkYZOb2x2uySIkg3RfvVhDdll8mLx 0T COCsrF61yQug5vRbhD
t2RRijM32VOKN98DYyToyBjmYyVahUkQ3PlpMFZpHNtvklRnXoSFO8fiWnV0jya7ofRPEI u8TZM
cGv9AFyJUVsf4F gMct/GHZeMEaOwRijvJooENz1w40henolyHufShrzgh1xYz5YcA6M0SWGYwy1
PiUIn 77jNJ8uEZWkEVK Inetth5jD5Zf4vs oIxOsGQjWniX/Pphb2H6DL/bBVZJEeQsXEQVu/I
wj1a3tcBY3SCQRvT9ObKig xNyHjIasT/8PGsg25YVPwAQ9hOeeEolyHxjSW3z21e/P6db5bjyQ
pgz3338M25gmQRZvFGUqDZn2mbjCf9/RqKgju3znjbTG7it0QNyB61PryCN1Z4yw6Li7rWISiLAc
G5Sh/ND3HwM3RtzMpAc4mePOaAJ1GuGbjM o6MiYxvuBI7ACsTPdv76i2iN/bzF4Y8S/6dIrG0bT
bylTQYSl4/ex1BuROjPm4TZ8cCYe9X/olaj eYv3kjZgjISG4vjtnmNsO J3kaQgoqOt8 Lgy49V
7wXqyJgm0YuY5Yp76YhjM3nf/XYkDFvGvBuE1cVpl04e2hPM89/izwvec jk5bTi6mZE0xWi17kX
D2/nBYYcOHsHfx6rPdCmjAEMADAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGWAMwAwwBmAGGAMw
A4wBmAHGAMwAYwBmgDEAM8AYgBlgDMAMHRkjaqgszk5LuRZ/MTb2UnxSSkZOUUV9u4pAeG9h2Zja
giv71nw5up8lF6k8kcu16D3yi5WHM9vRc/fvI wZIypP3ja9b0vpYyaukQYUMy949aSkXYXYsQBb
xlSn/uyIp8NpwhCMaSjLjo8MXv3V E sTJThIYB2sGNMQ7qfPT11EBmZ2w52Gj/BZazj0I 6diTX
G nbGFHlSXcr5UJKLG4G0A5WjKm/6oUvjxZ3Wfq47fy7BF9CJHiVlxThv3hsvzl6Nqbs0BRsYRUY
wxg2jGnMDRqFrxIkbDzOqYZJyXhTU6OH9UVKwJjWwoYxtNWFHTi9fa4xrwbR64LrJ3dt9PacO2va
tOlzPLx9Q6P LqxR6ZdqiAIXvMw4tXPD8rkzXV3d5i5bG/x76nPKSkVRRX665P3xfs6Y3YTVrL0p
0vPcTrtXrEgHb7 J4C2jizamA2Hpsi0DXzTfAqKKW/uXOnal94Qkl7euTt7HcyhxiWoWx9bm/f71
MAvqCltEfDDi2/Mliiqv/cPNhCxSjzw0TTURXHYCQAYr/ZiGBC88J0oC0Xmge1BcAT0aUw38wpNL
BnZSkUUB4nSdvDdb2SeiGzP6h1CPvqqySSAsJu2Xr7XW0hh1ieCyEwAyWDGmiZ/uN0RNpSGujcPc
TVFppZpXslffWG Pz GgjrYOk2e4ugyxwQK kalDQKb8HDRjkGnHZuaAjPqvS5UdqKUx6hLBpccD
JOwYI675f/wcNM3HoE59J689drdSdaqMn7lluNIMZGQ758gDWeST6HU6b5yFIn6K6DLvNDnGohkj
BnUaOD/0QnpufvaN42s/xSOjJZkMZIanIDua5y9mw0w8kxWZOSzaJHnZ3z9w98UicXukJhFc rEA
CVvGSGJeEn526YZnRlFAxraTA5LKKAMlamgZ0cMjpgKzqj7Jp7eilLCcd0bWM6IbQ1hP/ 2J4rSi
0mOzLPFg587up/DYMS3GSu06Ebxl2DNGgqA0ee8yp 6adoxAnexXxytz7PjXV2F1z7H1TqRWXlXk
dGWimdFA33Rp7gbNGKL78kt4qJioIsIVv0zR9hmE0XVrYdcYGW Kkg6unTFINt6gwem1LO6VzBnR
s/AJWOVxujnO9qCwwAXr0RKWiy5I65be83UMzqOMgRuuruyJx8O7hJWQJRLAmNaiC2NkCKtyzvrP
GkDZAkcMMpt6pFT6BlqOewugTu6npQMmujH0cCtapCvXZd9TskQCGNNadGeMFHEHNuRzal U6LL0
orSMFsXbAmJjToExBoCOjRHTmMNzoMzvmcyMkhYIH20fjRVwbKeu2xaskZCdfz2UXn3AGP3ChjHC
gkPffn 6QDW7UIqwaPc43BhkPu srKTuLw8rZfNDdFl4Tpt54lYaU34YNwZZLjoPxjCCFWPyQ5y4
hMWg2Zv zCynTda9yYta BFlco87IvC rExUFjkDi pFZmNo 22ppXXGNFVHzcQjpY3slVt4yWnP
ieAtw5oxsgpAXIuPnF3nLfVe88MPq1fOnzKsG21vPWQ8MjBbMbapuuDZE6tdxLEetSQk kbO0/ q
a2telZc8TE IDvdb8rmL73WFia00hp9IezLDbKC7/8FjEQdC98QWiL YmkRw8khACsvGtAAytluV
gD8mKXxyzK0bpWOsDk4vn2tsGSOqjHbHroVKZHcJ1CWCk0cCUt6hMaiT3aJjefTejqgqlTfBptlE
cFaNEXefbvsNU3MrijRGTSI4eRwghQ1jmuryz29d rmdlZqbkRIQx7zveM g83k15Pvp8J8m7PAc
3VPdHUVEdOzh4O5/qURhRauNEb l8Mx3zja0b0s 7aAmEZw8CpDCijEkwpqS7JTLpyP279oeFOjv
zwvasfuXYzEJafn/aTUcaawqvBn3 y87gwK3bAngBYeGHfkzLvl aZ1u7uuIaotvnY/YFyKJHw8M
Cg2POHOjgHyiqj0ngrcMm8YA7QEwBmAGGAMwA4wBmAHGAMwAYwBmgDEAM8AYgBlgDMAMMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzCj1cY0PgibM2oEU0a57VGuWgLaEq02RiUG
TCuMBqy/Bc9ct0nAGIAZYAzAjFYbI/ov4 zRI1R2Lx6EryvkDlq8myyRc/R0Wplu1iEBOqbVxqhB
VHpwEpa40cF40sFS0ON9wZCM4Zf9ezlyx0Yfz6/cXKdOnTbTfZHXj8G/xd17SUsYwYA4 HeOYRgj
qsw47D3eVn2UMzK1/cwn4p5KSirEwesFAzCmIf/4QsXaeE0gM3vv88 wJfkQB68n9G2MqPLqt3aa
8n pIHPnoExFmAjEwesJPRtTn0rJdO AjLqN9QmPvZXzKD879dyelY7W I4mqPPEsEJ5OwNx8PpB
v8a8jlmAR7ciM2daEl518rrBuFFGQ7DYOoiD1wd6NaYhfkUPTBii5/KL9O11RCUHJuF9HO6YHdSA
IeAdo09jhEW7PsVm pCZ2x qmwUK0n3x/goE8OobfRojuPPTYEwGMlaMhrBw51hcq47u0RqCg4F3
gl6NueuHG0P09EpQbT4a84LxKEP0wYJzYIw 0etV6em zyjNh2tkBVmkhJ/oje8oaPQJ3MLUL3rt
dJiMYku88/S521p210gC/doTRsjA 8EvRpD28StAzIesjpRuWOXeDCVGzbFGh9NWc45gZVDHLwe
0K8xTYIs3ihKDj0y7TNxhf o1FRR3b5zhtpje/qhbgD16cq9muDOHj9oGdjxM1MeoATtp2FZlCn
Eb7Jys1RIA5eT jdGHFjUXplw2irZnPmEWHp H0sfiMS4uD1hQEYI6GhOH675xjbjtR98cUgoqOt
8 Lgy49VhtQQB68fdGHMWyOsLk67dPLQnmBJ9DsveM hk5fTiqs13xSAOHg9YFDGAG0AMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGWAMwAww
BmCGro1prCl9dC/1WvyluLhL8YnXb2XlP6vSHGsHGD46MkZQnnlqm9d0h17m IIjKYgwtvzIcdbG
80/J9wJtCvaNaXxxbbv7oA9UVgVQMbLbcJs8AGhTsGuMqCotdOqHeKiUJsCYtgqbxtTeDXGxwlZJ
NwcY01ZhzRhRxWWv/vTWBXG7Oy3w3XPy6s3MB48KHz3Iup0YE7HT13OSXddBYEzbhC1jaq vHkDt
5CKzwUsj71erXwwpqi0vp0feAW0CdowRPv1lMh7H3AGZDFoVj d6aIvozdNbMb/w1q1cOGfGtKn/
2LGl/OXr94SdjrtOR5fBeHy oMVY4T520fjFyTEtVuXwjjPhf8kftvcYdbq 83GUw6Rm6VAuLx
YcMY0bP9E/HYb2Q6IayYWYSqqDIl0KVrM/kOxpN/fSkxBsLl9Q0bxjTELcFznDtwR4fkMxKGnxs2
CY iUoPcGAiX1zcsGCN6Fj4RD/8grBbHMoncFRaGf/4BpXUhPhg42/fghX y8grys29ePBqw2LHX
NJkxEC6vb1gwpjGH54Bn/3D6fneDwa0j/s11A/BWg7CeFJpZQxbKEVaWlsvPCeHyeoUNY2j5YpwP
vRK0N0aQ9qMdHqZpNjHsMcTIGzAsGCMs3jMeNwaZukao5vJqQPTy18lYrxmZTDr4AhoNQ4aNnm9d
zHwLvB9C9Fh2SduxdWPWlqGYbkRPr6uw7YBBw4YxwoIdYyghhkQX95Pl2rUUggzK2IfosTIejDFo
2DCG3lBIZkn6r7yk1ZSv8NF2Z xQZOwS9hS6MYYMK8aI633np7SdHgnL0T/Gv9BQ cKKu1dSS6T/
WX9xqQ02FYNMnLblQAiiAcOOMU1Nr6949aVP2SJu11GLtp64nlfBlzU3ovqy3OTTe9bMsrc2UTzt
8DpmYVd89g51dlgb/4J6w0jwIvV6tuLOJYTL6xO2jJE87eA9QMMWoYjgmllaWXTiKh/Mw56PaUj3
G0o9EBlZDZ21ihf22/GoyAPB6xeO72NmQs75Qri8vmHNGDH1Ob/OUlZm81CeqKq5 bODWfPHye8S
QLi8vmHTGDH8ovPrx3fXwhraM3jC53HfO1o282ywwhgIl9czLBsjQfQqKzpg0bi 5upvRSPCtPtw
11UHb1eS75dTVxDLmzvCRo1uyKS7s9812Z0DCJfXMzowRo64m/tP3InDe7dvDdyyeUsAL2T3gYhT
l2/mvqxrbtjN/y/3RkxE2Hae/ bN/ryQvYdPXrpdSH1yCsLl9YkOjQHeS8AYgBlgDMAMMAZgBhgD
MAOMAZgBxgDMAGMAZoAxADPAGIAZYAzADDAGYAYYAzADjAGYAcYAzABjAGaAMQAzwBiAGToyRtRQ
WZydlnIt/mJs7KX4pJSMnKKK uYe1mSK4E7I1OH2CkYuOlbCYCllw O4rUu/GOvoOM51xY6EEnjy
kwEsG1NbcGXfmi9H97PkIvoD3ohr0XvkFysPZ7Kyrpp/47s HPLMYrhjQgu0NqY6wedj5fPnyMT
p9uw1ltr2DNGVJ68bXpf2lpaFUxcI1 RB7SKVhjDT17TDztUfPCIgGx9hnYKXj0pqWKzAdYpbBlT
nfqzIyWfVQMGYIywcPd4XGzUedpR2XrLd0pDWXZ8ZPDqr8Z/YmXSbfnlNtPKsWNMQ7qfPX2dETIy
tx3sNH6Cy1jHoR917UguXjIAY8TXzju7p/WSLdxFpn3dDvxbRxa8K0SVJ92tlIHZRLszpv6q14d4
O4 4fdx2/l1STxZLELzKS4rwXzy23xwDMEZC/cuc1Gt/38ot10dVicoOTcHCJtudMY25QaPwla2E
jce512QZnTc1NcxqVgOtNkavtHdjBLfWU9IyOb19rmn3B6h7dj/ttoK07Ge0bI 659TyEkW5BmP4
LzNO7/JdMc9t2heubgu8ftoXc69cpVMrqnmShZ02/UGp m8rel1w/eSujd6ec2dNmzZ9joe3b2jU
34U1zXd5mo/JF1Xkp0s M94Pz1kirGbtTZF l9tp94qVWzkYZJi LtqYDoSly7aMarK0GRqz/Idh
B3KHbr5H ds0ZgcMx8qN7DdlyqdO1BhTff o5xD6TmCIYznS6 QjihJatE iilv7lzp2VV0Djrhd
nbyP56jdhUOLmPzaP9xMyBfUw7H9JkkaVGqwYfqs9GMaErxssSqQQHQe6B4UV9D8/iYsGuP07ZZZ
PTWk1CPuxytisVy lozhF55cMrCT nNJQJyuk/dm4700sWLaxeRra4wBh mzYkwTP91viLpMBq6N
w9xNUWmlGuJ92TMGGRmpbEiJw n3TaIiVbp5Y6pvrLenDL472jpMnuHqMsQGT5E1dQjIVP6rtI7J
19YYAw7TZ8cY8d/5Hz8HTfMxqFPfyWuP3a1U6QCwZ4wEwmrU13tjb fm56Zf2u/lRK1BZOH2uzzK
sTlj JlbhivNQEa2c448kHWeRK/TeeMsFCclusw7TY76GMTkC7Kjef5iNszsT4m9dli0SfKyv3/g
7otFki9juGH6bBkj/ruVJvzs0k3jLx0Z204OSCqjNP8sGoNMhq5PxgZoolfx3h/jX4awXBBDXiOb
MebNlRXYPAHRwyOmAvO8Psmnt6KUsJx3RtpXYxyTL/52WoyVDDVMnz1jJAhKk/cuc quIQ5P3NjY
r8b36WLPGMJyzgm8bsUI84KdsIM7cIf7/ysr0WwM//oqrIRj651IrciqyOkmin b0UDfdPHXeZuY
/PY uqbzpijp4NoZg2QdfRqcXsviXsmrlsWe77jd0sYch59ImVckenolkAWajBE9C5 AVSSnm Ns
DwoLXPoqLxWE5aILDW8Xkw/GqENYlXPWf9YAeiIiMpt6pJR8C3vGmLhGqEwlC9J98R8/0WVJnKxA
ozGCzE32lP5ms6BO7qfrxf Gt4jJB2M0Iu4uhnxO2a5LXHNLL5KlbBqjevOBeomRjkLIAo3GZGwc
xMiYU/VvF5MPxjQHffulDiYzo RF//pTjBj00x25EVIEd/wGY7XRjDHGE/c/o10LRGWH/6fsdIjF
GLX1gaxEozHCR9tHY9 HYzt13bZgjYTs/Oth49vF5Ld3Y4QFh779/nQBdUpLgbBo9zjcGGQ 7yxZ
RItaJaw8/qLcJqj83c0cq/Pmer5dF8ZQb2WJXkbOwHdkIbouiSNvUWs0pqnuLw9si3eiy8JzLc9c
v01Mvqj8MG4Mslx0vn0Zkx/ixCUsBs3e9GcmNoSU8iYvauFHlMk97ohARZ7qq8jp GQZYfPl788V
TcWbOwGOlJnXZozpgEyHb7ih6FKLh/rnl9EG1 5/yq9bmo0RlUXOwBxFZmN4d1uMsWcek9/UVB01
E2//jOx/vqtimYGG6bNmjOyfjrgWHzm7zlvqveaHH1avnD9lWDf8DyMGGY8MVD7w1kjvaqLOdrM2
7ImIigzf7OFgTZt0b84YMYS53cx1O387HnmA5 XSi/q5nL7fJCoqTLMx4vHzBc eWBniWI9aEhJ9
I fpf9W1Na/KSx6mJ0SH y353MX3uuK3wSwmXwptHCd2c6C7/8FjEQdC98QWSP48hhumz7IxLYCM
7VYl4A8oCjI3D1Vze0EG4lpZm2O/3haM0QzR3f2PZ8rORXPGNAmfHHPrRumqq4PTy ca1poyiMmX
IaqMdseuf0rIuwQGHKb/Do1BnewWHcuj9XZE5ReW91PrDGE9aWf0T1qOlYwGuEzorV49wtJ5UzLl
DkWzxoi/UlUqb4JNMzcVxdCMEf8NtI3Jl1N322 Ymoei5cYYbpg G8Y01eWf37r0czsrDa0F4pj3
He8ZdD6PPnUuoy73 IqR2DOMksbFeuTXkfdrBdrP4I3ZkfPwz28cu1BmDZFxj3HfHsuiT7C3YIwE
/tOEHZ6je6p7zh0RHXs4uPtfUl3tol1MvgJ 4ZnvnOnvJo0x4DB9VowhEdaUZKdcPh2xf9f2oEB/
f17Qjt2/HItJSMv/r8WBgKi6MOXM4V1BAYHBe4 cSSmqpVWylohqHqecObSTF8AL2fvrias5FSrd
SQn866uUt4fExozfU6xS 1Iaqwpvxv3 y86gwC1bAnjBoWFH/oxLvl/abEq NjH5SkS1xbfOR wL
4flv8Q8MCg2POHOjQP5ElYGG6bNpTFuhIdYTu7GNTGccM5SnldoC7dCYxgeUKUWj/utuGs4v2PBp
J8aIqvP/LZQOrxufxyzGezFE96VxhjPZ0QZoJ8YIC0LHdO5q5 ziPMCS0tc06r8m V2vVmrbtCNj
VCcAEMd2wenSt tkt1varzHIqNvEbbcM5tG2NkN76ceUnV892tZMOi2HOGYfjnBdFX7jOXR434J2
YowMYX3Vyxcvq rVz74AWtGujAFYAIwBmAHGAMwAYwBmgDEAM8AYgBlgDMAMMAZgQlPT/wHgbtxB
HbHjAAAAABJRU5ErkJggg==
">