【问题标题】:How to convert html with svg tags and css in to image in java如何将带有svg标签和css的html转换为java中的图像
【发布时间】:2015-09-02 04:19:25
【问题描述】:

我们可以成功地使用 Batik 将 SVG 转换为图像,但是,我需要将整个 HTML div(其中实现了 SVG)连同其 CSS 演示代码转换为图像。

Batik 或其他一些 Java API 中是否有任何模块/支持来实现这一点?

【问题讨论】:

    标签: java html css svg batik


    【解决方案1】:

    用于 Java 的 Selenium 库可能会对您有所帮助。它可以在后台模式下运行浏览器(即 chrome、firefox 等),您可以加载 HTML 并对内容进行快照。

    虽然它是为测试和自动化而设计的,但这是我能为您提供的唯一方法。

    希望对你有帮助。

    http://www.seleniumhq.org/

    【讨论】:

      【解决方案2】:

      我们遇到了同样的问题,我们通过生成 PhantomJS process 解决了它。

      Phantom 获取一个 JavaScript 文件,该文件将指示其无头浏览器做什么。
      您可以等到页面完全加载,然后您可以将输出作为数据 URI 打印到控制台。

      下面是我的 PhantomJS 脚本中的一个非常简单的示例:

      var page = require( "webpage" ).create();
      var options = JSON.parse( phantom.args[ 0 ] );
      
      page.open( options.url, "POST", decodeURIComponent( options.payload || "" ), function( status ) {
          if ( status === "fail" ) {
              phantom.exit( 1 );
          }
      
          var contents = page.renderBase64( "png" );
          require( "system" ).stderr.write( contents );
      });
      

      【讨论】:

        【解决方案3】:

        这不是一件容易的事,因为您要问的是称为“html 渲染”的过程,基本上是浏览器尝试正确实现 2 多年的过程。

        • 如果您需要渲染的 CSS 相当简单(没有 CSS3,没有花哨的东西等),那么很可能其中一个开源渲染器会是能够处理(以 PhantomJS 为例)。有关详细信息,请参阅@gustavohenke 答案。

        • 如果 CSS 比较复杂,并且如果您能够在需要时对其进行修改 - 那么有一些快速但非免费的渲染器,例如 PrinceXML 和 DocRaptor。

        • 如果 CSS 可能非常复杂并且您无法使其更简单 - 那么唯一的选择就是在真正的浏览器中呈现它。您可以为此使用 Selenium,因为它具有运行浏览器、在其中呈现 HTML 并以自动方式“截屏”结果的方式。有关详细信息,请参阅@Jorgeblom 答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-09
          • 2016-02-09
          • 2011-05-16
          • 2020-04-20
          • 2016-10-19
          • 2019-12-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多