Heim > Java > javaLernprogramm > So verwenden Sie PhantomJs, um die HTML-Bildausgabefunktion in Java abzuschließen

So verwenden Sie PhantomJs, um die HTML-Bildausgabefunktion in Java abzuschließen

王林
Freigeben: 2023-05-12 08:55:11
nach vorne
1776 Leute haben es durchsucht

I. Hintergrund

Wie erstelle ich ein Bild im Miniprogramm und teile es mit Moments? Derzeit scheint es keine gute Lösung für das Frontend zu geben, daher kann es nur vom Backend unterstützt werden.

Das Generieren von Bildern ist relativ einfach. Einfache Szenen können direkt von JDK unterstützt werden. Im Allgemeinen gibt es keine allzu komplizierte Logik. Ich habe zuvor eine Bildsyntheselogik geschrieben und sie mit awt implementiert: Bildsynthese , Komplexe Vorlagen

können direkt unterstützt werden, aber wenn das Backend komplexer ist, ist es zweifellos ekelhafter. Ich weiß nicht, ob ich nach einigen Open-Source-Bibliotheken zum Rendern von HTML gesucht habe Es liegt an der falschen Körperhaltung oder so, aber es gibt keine zufriedenstellenden Ergebnisse

Wie unterstützt man jetzt komplexe Vorlagen?

Dies ist die Anleitung dieses Artikels. Er verwendet PhantomJS zum Implementieren von HTML-Rendering, unterstützt das Generieren von PDFs, das Generieren von Bildern und das Parsen von Dom. Als Nächstes zeigen wir, wie PhantomJS kombiniert werden, um einen Dienst zu erstellen, der Webseiten in Bilder rendert

II. Vorbereitungsvoraussetzungen: 1. Installieren Sie phantom.js.
# 1. 下载
## mac 系统
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip
## linux 系统
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
## windows 系统
## 就不要玩了,没啥意思
# 2. 解压
sudo su 
tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
# 如果解压报错,则安装下面的
# yum -y install bzip2
# 3. 安装
## 简单点,移动到bin目录下
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
# 4. 验证是否ok
phantomjs --version
# 输出版本号,则表示ok
Nach dem Login kopieren
. 2. Java-Abhängigkeitskonfiguration, um Abhängigkeiten hinzuzufügen
<!--phantomjs -->
<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>2.53.1</version>
</dependency>
<dependency>
  <groupId>com.github.detro</groupId>
  <artifactId>ghostdriver</artifactId>
  <version>2.1.0</version>
</dependency>
<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>
Nach dem Login kopieren

Testfall

public class Html2ImageByJsWrapper {
  private static PhantomJSDriver webDriver = getPhantomJs();
  private static PhantomJSDriver getPhantomJs() {
    //设置必要参数
    DesiredCapabilities dcaps = new DesiredCapabilities();
    //ssl证书支持
    dcaps.setCapability("acceptSslCerts", true);
    //截屏支持
    dcaps.setCapability("takesScreenshot", true);
    //css搜索支持
    dcaps.setCapability("cssSelectorsEnabled", true);
    //js支持
    dcaps.setJavascriptEnabled(true);
    //驱动支持(第二参数表明的是你的phantomjs引擎所在的路径,which/whereis phantomjs可以查看)
    // fixme 这里写了执行, 可以考虑判断系统是否有安装,并获取对应的路径 or 开放出来指定路径
    dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/local/bin/phantomjs");
    //创建无界面浏览器对象
    return new PhantomJSDriver(dcaps);
  }
  public static BufferedImage renderHtml2Image(String url) throws IOException {
    webDriver.get(url);
    File file = webDriver.getScreenshotAs(OutputType.FILE);
    return ImageIO.read(file);
  }
}
Nach dem Login kopieren

Die generierten Bilder werden nicht veröffentlicht. Wenn Sie interessiert sind, können Sie zum tatsächlichen Testen direkt auf meine Website gehen

III. Eine einfache Webanwendung wurde auf Alibaba bereitgestellt Cloud-Server, der die Funktion von HTML-Ausgabebildern unterstützt; Da ich die Beggars-Version gekauft und eine coole Front-End-Vorlage verwendet habe, wurde sie langsam geöffnet.

Bedienungsdemonstration:

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PhantomJs, um die HTML-Bildausgabefunktion in Java abzuschließen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage