【问题标题】:Convert html table/chart element to image将html表格/图表元素转换为图像
【发布时间】:2018-07-08 07:05:29
【问题描述】:

这是我在空闲时间尝试做的事情。但是,我还不确定我可能面临的复杂性和问题。我想访问这样的网址:https://fred.stlouisfed.org/series/DFII5 并将此图表另存为图片,在我电脑上的任何本地位置。

我的第一个方法是使用 html 敏捷包:

 var document = new HtmlWeb().Load("https://fred.stlouisfed.org/series/DFII5");
        var urls = document.DocumentNode.Descendants("img")
                                        .Select(e => e.GetAttributeValue("src", null))
                                        .Where(s => !String.IsNullOrEmpty(s));

甚至使用 WinForms 网络浏览器控件:

private void GetWebpage(string url)
    {
        WebBrowser browser = new WebBrowser();
        browser.Navigate(url);
        browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);

    }

    void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var browser = (WebBrowser)sender;
        var client = new WebClient();
        foreach (var img in browser.Document.Images)
        {
            var image = img as HtmlElement;
            var src = image.GetAttribute("src").TrimEnd('/');
            if (!Uri.IsWellFormedUriString(src, UriKind.Absolute))
            {
                src = string.Concat(browser.Document.Url.AbsoluteUri, "/", src);
            }

            //Append any path to filename as needed
            var filename = new string(src.Skip(src.LastIndexOf('/') + 1).ToArray());
            File.WriteAllBytes(filename, client.DownloadData(src));
        }
    }

这两种方法都能够从该网页获取所有图像,但是图表是我想要的,它不是图像。

这个任务可能吗?我需要库/nugets 来做到这一点吗?我将如何实现这一目标?注意:不必在 C# 中执行,它可以在 Python 或其他任何东西中。

编辑一些进一步的研究让我注意到了这两个:http://www.princexml.com/ 和 https://wkhtmltopdf.org/

据我了解,它们都是 html 到 pdf 库。是否可以使用这些,仅获取图表的 html 并将其转换为 pdf?

【问题讨论】:

标签: c# python html .net html-agility-pack


【解决方案1】:

只是第一个想法。是的,该图表不是图像。

因此,一个想法可能是:让您的软件截取屏幕截图并使用一些图像编辑 SDK 剪切特定区域。

对于加载网站和截屏,我会想到 Selenium 之类的东西。之后编辑图像,你可以使用 ImageMagick 之类的东西。

另一个想法可能是从网站上获取该图像的元数据并自行绘制。

【讨论】:

    【解决方案2】:

    你可以试试 HTML2PDF 转换器。见https://www.html2pdf.fr

    或 HTML2PS 转换器。见http://user.it.uu.se/%7Ejan/html2ps.html

    ImageMagick 可以使用后者,如果已安装进行转换。请参阅http://www.imagemagick.org/script/formats.php的 HTML 部分

    【讨论】:

    • 我以前从未在 ImageMagick 中这样做过。但想必,如果你安装了html2ps,你应该可以做到:转换https://fred.stlouisfed.org/series/DFII5result.ps。但是 ImageMagick 有一个 policy.xml 文件,您可能需要将其修改为所有您从 https: 读取的文件。或者,在您的浏览器中下载您的链接https://fred.stlouisfed.org/series/DFII5,然后使用 html2ps 或 html2pdf。但同样,我以前也从未这样做过。
    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2014-05-13
    相关资源
    最近更新 更多