Base64 字符串编码图像未加载到输出 PDF (TuesPechkin / Wkhtmltopdf)

Base64 string encoded Images not loading on the output PDF (TuesPechkin / Wkhtmltopdf)

公平警告:这个 post 是一个有点像论文大小的问题...所以让我先向所有经历过并试图回答它的人表示感谢。

上下文:
我一直在尝试我能找到的仅有的 2 个免费商业用途开源 html 到 pdf 转换库。

不幸的是,PDFSharp 输出的 pdf 格式布局完全混乱,不符合输入格式 HTML,有时无法正确输出图像。 (如何should've look vs how it looks with PDF#)
另一方面,TuesPechkin(wkhtmltopdf c# 包装器库)除了只输出这些 odd "image containers" (a hollow outline of where the image supposedly should be).

之外一切正常 我在调用 class' 构造函数时声明 IConverter 对象,如下所示:
converter = new ThreadSafeConverter( new RemotingToolset<PdfToolset>( new Win64EmbeddedDeployment( new TempFolderDeployment())));

然后我有以下方法,您可以在其中找到我当前用于转换的 GlobalSettings 和 ObjectSettings。

/// <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);
    }

这个“HTML”字符串是从我正在使用的另一个名为“MailKit/MimeKit”的库的输出中获得的,该库由“Jstedfast”制作。
我将这个输出和插入我自己的 "formatted header with some of the email's info" 类型,同时在每次出现图像时切换图像的 CID,使用以下使用 MailKit/MimeKit 工具的代码:

...
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);
            }
        }
    }
}
...

旁注:“temp”是我的 MimeMessage。

下面是整个建串过程,供参考。我通常在 HTML 预览器上测试这些输出,它们在格式或图像显示方面没有任何问题,所以我知道问题不是我尝试转换为 PDF 时的 HTML 输入:

...
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 { }
...

所以,我的objective是为了修复输出的PDF文件中这些空心图像容器的奇数输出。

编辑:这是一个 HTML 字符串的示例,在它被发送到“Convert2PDF”方法之前直接从调试器中获取:

<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; ">&ensp;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; ">&nbsp;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;">&nbsp;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;">&nbsp;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;">&nbsp;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,
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
+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&nbsp; &nbsp;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>

我一直在使用以下站点测试这些 HTML 字符串,确保它们的格式和图像正确显示:https://www.onlinehtmleditor.net/

我使用 NuGet 包 itext7.pdfhtml 测试了您的 HTML,图像也没有显示。但是经过一些调查,我发现 src 属性.

中的值存在问题

src 属性 值中你有 data:image/png;Base64。它应该是 data:image/png;base64 - 注意 base64.

的小写 b

Base64 更改为 base64 后似乎有效。

<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,
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
+HbHjAAAAABJRU5ErkJggg==
">