如何使用HtmlRenderer显示PDF格式的图片?(输入URL时自动下载图片

How to show image in PDF with HtmlRenderer?(The image is downloaded automatically when you enter the URL

我想用 HtmlRenderer.PdfSharp 显示 PDF 格式的图片。我正在使用这个例子。 https://github.com/ArthurHub/HTML-Renderer

我可以用 PDF 格式显示 link。 https://helpx.adobe.com/content/dam/help/en/stock/how-to/visual-reverse-image-search/jcr_content/main-pars/image/visual-reverse-image-search-v2_intro.jpg

但我无法在 PDF 中显示此 link。 https://images.data.gov.sg/api/traffic-images/2016/02/96128cfd-ab9a-4959-972e-a5e74bb149a9.jpg

因为当你输入这个link时,图片会自动下载,不会在浏览器中显示。

此代码生成 PDF。

private void OnGeneratePdf_Click(object sender, EventArgs e)
{
    PdfGenerateConfig config = new PdfGenerateConfig();
    config.PageSize = PageSize.A4;
    config.SetMargins(20);

    var doc = PdfGenerator.GeneratePdf(_mainControl.GetHtml(), config, null, DemoUtils.OnStylesheetLoad, HtmlRenderingHelper.OnImageLoadPdfSharp);
    var tmpFile = Path.GetTempFileName();
    tmpFile = Path.GetFileNameWithoutExtension(tmpFile) + ".pdf";
    doc.Save(tmpFile);
    Process.Start(tmpFile);
}

这是我在粘贴 link 时遇到的错误。

我就是这样解决问题的。

      public static void GeneratePDF(string htmlstr)
        {
            PdfGenerateConfig config = new PdfGenerateConfig();
            config.PageSize = PageSize.A4;
            var doc = PdfGenerator.GeneratePdf(htmlstr, config, null, null, OnImageLoadPdfSharp);
            var tmpFile = Path.GetTempFileName();
            tmpFile = Path.GetFileNameWithoutExtension(tmpFile) + ".pdf";
            doc.Save(tmpFile);
            Process.Start(tmpFile);
        }

        public static void OnImageLoadPdfSharp(object sender, HtmlImageLoadEventArgs e)
        {
            using (var client = new WebClient())
            {
                var url = e.Src;
                var tmpFile = Path.GetTempFileName();
                client.DownloadFile(new Uri(url), tmpFile);
                ResizeImage(tmpFile);
                e.Callback(XImage.FromFile(tmpFile));
            }
        }