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

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

王林
王林nach vorne
2023-05-12 08:55:111696Durchsuche

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
. 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>

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);
  }
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen