Преобразование HTML в изображение (через авторазмер JEditorPane) - PullRequest
0 голосов
/ 05 марта 2020

Механизм для преобразования элемента HTML в изображение (например, PNG) «рендерит» его через JEditorPane следующим образом:

public void render(String html, int width, int height, file output) {
  JEditorPane jep = new JEditorPane("text/html", html);
  jep.setSize(width, height);
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  jep.print(image.getGraphics());
  ImageIO.write(image, "PNG", output);
}

Этот подход работает для простого HTML код, включая базовую c поддержку CSS.

Есть ли способ "автоматически определять" ширину и высоту вместо явного указания его в методе render()?

Или какой-нибудь лучший способ конвертировать HTML в изображение, через "простой ваниль" Java?

1 Ответ

1 голос
/ 05 марта 2020

Большая часть элемента HTML не имеет размера по умолчанию. Размер задается текстом, найденным в этом элементе, и шириной экрана, где отображается элемент.

Но если вы хотите отобразить элемент с текущим стилем, отображаемым на экране пользователя, вы, вероятно, можете попробуйте получить ширину элемента root.

Для этого попробуйте преобразовать строку HTML String в элемент DOM ( Создание нового элемента DOM из строки HTML с использованием встроенного DOM методов или прототипа ), затем получите root ширину и высоту элемента.

...