-1

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

我可以在 PDF 中显示此链接。 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 格式显示此链接。https://images.data.gov.sg/api/traffic-images/2016/02/96128cfd-ab9a-4959-972e-a5e74bb149a9.jpg

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

此代码生成 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);
}

这是我粘贴链接时遇到的错误。

这是我粘贴链接时遇到的错误。

4

1 回答 1

0

这就是我解决问题的方法。

      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));
            }
        }
于 2020-12-06T01:40:14.920 回答