繁体   English   中英

如何在c#中最终生成的pdf文档中使用库TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator下载嵌入式图像?

[英]How to download embedded image using library TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator in finally generated pdf document in c#?

我试图使用C#中的TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator库生成pdf文档,但是体内HTML中的内联图像不会显示。 有没有人有想法或解决方案如何做到这一点?

嵌入的图像添加在电子邮件正文中,例如src =“CID:” ,这实际上是在生成的PDF中不加载图像的问题。

这是我的示例输入:

<b>Dell</b><hr style='background-color: #000000 !important;color: #000000 !important;border: solid 1px #000000 !important;'/><br/><table border='0'><col width='100'><col><tr><td style='font-weight:bold;'>From:</td><td>dipak patel</td></tr><tr><td style='font-weight:bold;'>Sent:</td><td>Friday, April 12, 2019 06:58 PM</td></tr><tr><td style='font-weight:bold;'>To:</td><td>dipak patel</td></tr><tr><td style='font-weight:bold;'>Subject:</td><td>Test Embedded image</td></tr></table><html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head>

</head>
<body lang="EN-IN" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p><span style="color:black">My test no is HO284848<o:p></o:p></span></p>
<p><span style="color:black"><o:p>&nbsp;</o:p></span></p>
<p><span style="color:black">This is my embedded image.<o:p></o:p></span></p>
<p><span style="color:black">e.g.<o:p></o:p></span></p>
<p><span style="color:black"><o:p>&nbsp;</o:p></span></p>
<p>

<img width="643" height="345" style="width:6.7in;height:3.5916in" id="Picture_x0020_1" 
src="cid:image001.jpg@01D4F161.62577ED0">

<span style="color:black">&nbsp;<o:p></o:p></span></p>
<p><span style="color:black"><o:p>&nbsp;</o:p></span></p>
<p><span style="color:black">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

Here you can see the <img> tag which contains the src="cid:image001.jpg@01D4F161.62577ED0" which is embedded image and not loaded in PDF.

这是我的代码片段:

public static string GeneratePDFWithHTML(string BodyHTMLText, string SavedFilePath)
{
    //PdfSharp.Pdf.PdfDocument pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(BodyHTMLText, PdfSharp.PageSize.Letter, 20, null, null, OnImageLoad);
    PdfSharp.Pdf.PdfDocument pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(BodyHTMLText, PdfSharp.PageSize.Letter);
    ////pdf.AddPage()
    pdf.Save(SavedFilePath);

    return "";
}

private static void OnImageLoad(object sender, HtmlImageLoadEventArgs e)
{
    using (var client = new WebClient())
    {
        var url = e.Src;
        //e.Attributes.Add("width", "90");
        if (!e.Src.StartsWith("http://") && !e.Src.StartsWith("https://"))
        {
            //url = Properties.Settings.Default.BaseUrl.TrimEnd('/') + e.Src;
            url = "http://localhost:58909/content/" + e.Src;
        }
        using (var stream = new MemoryStream(client.DownloadData(url)))
        {
            //e.Callback(PdfSharp.Drawing.XImage.FromStream(stream));
        }
    }
}

I have commented out the code in function GeneratePDFWithHTML which i actually needs with OnImageLoad event to load the embedded images.

这是输出:

生成的PDF示例,其中嵌入的图像未在最终输出中加载

这是生成的pdf结果,您可以在其中看到未正确加载的图像

请注意,图像不在输出pdf中。

如何将图像放在输出.pdf中?

有趣的是,我昨天遇到了完全相同的问题! 有趣的是,这是怎么回事?

我找到了解决问题的方法。 有关详细信息,请参阅我的stackoverflow帖子:

https://stackoverflow.com/a/55286205/1289046

PS - 如果元级别的任何人正在观看这个,我应该在另一个帖子中链接到我的答案,还是应该在这里发布相同的答案?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM