Я имею html-файл и много картинок от от него:
В своей программе я считываю, расшифровываю и вывожу текст на экран: webEngine.loadContent(htmlCode).
Цель: вывести полноценный html-файл с картинками.
Проблема: не отображаются картинки.
PS: Html-файл и его картинки находятся за пределами программы.
Моё решение, которое не работает как надо:
Я нашёл библиотеку Jsoup, она парсит html-файлы. С помощью неё, я, в каждый атрибут src="" тега img вставлял разные пути, но что-то не получается:
Код:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
...
String url = getUrl();
...
String htmlCode = getHtmlCode();
Document document = new Document(htmlCode);
Elements tagsImg = document.getElementsByTag("img");
tagsImg.forEach(tagImg ->{
String nameImg = tagImg.attr("src");
tagImg.attr("src", url + nameImg);
});
webEngine.loadContent(String.valueOf(document));
PS: Почему не получается? Путь точный, но работать не хочет. Есть идеи?
При условии что в html используются абсолютные пути, ни каких проблем не обнаружено (работает и через load и через loadContent). Попробуйте соответствовать данному примеру (если это возможно):
C:/Test/Page.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Ниже картинка</h1>
<img src="file:/C:/Test/test.png">
</body>
</html>
Main.java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
WebView webView = new WebView();
primaryStage.setScene(new Scene(webView, 300, 300));
primaryStage.show();
Path pathToPage = Paths.get("C:/Test/Page.html");
// test load
// webView.getEngine().load(pathToPage.toUri().toString());
// test load content
String content = Files.lines(pathToPage).
peek(System.out::print).
collect(Collectors.joining());
webView.getEngine().loadContent(content);
}
}
P.S.: контент после дешифровки, так же должен работать.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости