Как преобразовать html с тегами svg и css в изображение в java

Мы можем успешно преобразовать SVG в изображение с помощью Batik, однако мне нужно преобразовать в изображение весь HTML-элемент div с реализованным внутри SVG вместе с кодом представления CSS.

Существуют ли какие-либо модули/поддержка в Batik или другом Java API для достижения этой цели?


person manish verma    schedule 17.06.2015    source источник


Ответы (3)


Библиотека Selenium для Java может вам помочь. Он может запускать браузер (например, chrome, firefox и т. д.) в фоновом режиме, и вы можете загрузить HTML и сделать снимок содержимого.

Хотя он предназначен для тестирования и автоматизации, это единственный способ, который я могу вам предложить.

Надеюсь, поможет.

http://www.seleniumhq.org/

person Jorgeblom    schedule 17.06.2015

У нас была та же проблема, и мы решили ее, создав процесс PhantomJS.

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 );
});
person gustavohenke    schedule 19.06.2015

Это непростая задача, поскольку то, что вы просите, представляет собой процесс, называемый «рендеринг HTML», и в основном это то, что браузеры пытаются правильно реализовать более 2 десятилетий.

  • Если CSS, который вам нужно отобразить, достаточно прост (без CSS3, без причудливых вещей и т. д.), то есть большая вероятность, что один из средств визуализации с открытым исходным кодом сможет с этим справиться (PhantomJS Например). См. ответ @gustavohenke для более подробной информации.

  • Если CSS умеренно сложен и если вы можете изменить его при необходимости, тогда есть несколько быстрых, но платных средств визуализации, таких как PrinceXML и DocRaptor.

  • Если CSS может быть очень сложным и вы не можете сделать его проще, тогда единственным вариантом будет отрисовка его в реальном браузере. Вы можете использовать Selenium для этого, так как он позволяет запускать браузер, отображать в нем ваш HTML и «скриншотировать» результат в автоматическом режиме. См. Ответ @Jorgeblom для более подробной информации.

person bezmax    schedule 20.11.2018