将HTML代码转换为图像文件

时间:2015-12-10 12:26:19

标签: python html python-imaging-library

我一直在搜索,我唯一可以找到将HTML图像转换为.jpg,.gif或其他任何内容的方法是拍摄屏幕截图。 (或其他方式,但始终通过输出)

我想要的是内部,例如,我有一个谷歌图表的图表代码:

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["geochart"]});
      google.setOnLoadCallback(drawRegionsMap);

      function drawRegionsMap() {

        var data = google.visualization.arrayToDataTable([
          ['Country', 'Popularity'],
          ['Germany', 200],
          ['United States', 300],
          ['Brazil', 400],
          ['Canada', 500],
          ['France', 600],
          ['RU', 700]
        ]);

        var options = {};

        var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="regions_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

所以,我的问题是,是否可以使用Python将此代码转换为图像?

1 个答案:

答案 0 :(得分:3)

可能的方法:

生成浏览器,加载html,让它渲染,截取屏幕截图。您可以在无头X服务器(https://github.com/brenden/node-webshot)或真实浏览器中使用无头浏览器(https://wiki.python.org/moin/PyWebkitGtk)或几乎浏览器。

使用 Javascript 执行相同的操作(https://html2canvas.hertzen.com/)仍需要您的Javascript在某处运行,无论是node.js还是命令行或无头或真实浏览器。

向Google Charts询问图片文件,而不是在画布上绘图(https://developers.google.com/chart/interactive/docs/printing)。 YMMV,这取决于Google提供的内容。您可以使用其他一些图表库。