Wkhtmltoimage ist eine sehr nützliche Anwendung, um Screenshots einer Website oder Webseite zu erstellen. Manchmal mussten wir einen Screenshot von Webseiten erstellen und auf unserem System speichern. Es verwendet die QT Webkit-Rendering-Engine zum Erstellen von Bildern in verschiedenen Formaten. Dieser Artikel hilft beim Erfassen von Screenshots einer Webseite mit PHP-Skript und Linux-Befehlszeile.
Schritt 1:wkhtmltoimage unter Linux installieren
Laden Sie wkhtmltoimage von Google Code herunter und installieren Sie es auf Ihrem Linux-System mit den folgenden Schritten.
# cd /opt # wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.0/wkhtmltox-linux-i386_0.12.0-03c001d.tar.xz # tar xJf wkhtmltox-linux-i386_0.12.0-03c001d.tar.xz # ln -s /opt/wkhtmltox/bin/wkhtmltoimage /usr/bin/wkhtmltoimage # chown apache:apache /usr/bin/wkhtmltoimage # chmod +x /usr/bin/wkhtmltoimage
Schritt 2:Erstellen Sie ein Image mithilfe der Befehlszeile
Überprüfen Sie zuerst das wkhtmltoimage-Skript mit der Linux-Befehlszeile. Der folgende Befehl erstellt einen Screenshot von http://google.com und erstellen Sie ein Bild mit dem Namen google.jpg.
# /usr/bin/wkhtmltoimage --no-images --load-error-handling ignore http://google.com google.jpg
Schritt 3:PHP-Code zum Erstellen des Bildes
Verwenden Sie den folgenden PHP-Code, um ein Bild aus HTML (Website-URL) zu generieren. Dieses Skript muss die Shell_exec-Funktion für Apache aktivieren. Die meisten Shared-Hosting-Anbieter erlauben diese Funktion nicht.
Erstellen Sie einen Dateinamen getImage.php und fügen Sie den folgenden Code ein:
PHP
123456789 | <?php $url =$_GET['url']; // Website-URL zum Erstellen des Bildes $name =$_GET['img']; // Name des Ausgabebildes$command ="/usr/bin/wkhtmltoimage --no-images --load-error-handlingignore";$dir_img ="/var/www/html/images/"; // Bilddateien werden hier gespeichert$ex_cmd ="$command $url " . $dir_img . $name;$output =shell_exec($ex_cmd);?> |
Verwenden Sie die folgende Syntex- oder Demo-URL, um ein Bild der Website ( HTML ) zu generieren.
Syntax:
http://youdomain.com/getImage.php?url=<website url>&img=<image name>
Beispiel:
https://tecadmin.net/getImage.php?url=http://google.com&img=image1.jpg
Schritt 4:PHP-Skript für SEO-freundliche URL
Wenn Sie für dieses Setup eine SEO-freundliche URL erstellen möchten, können Sie die folgenden Schritte ausführen.
Erstellen Sie einige erforderliche Verzeichnisse im Dokumentenstammverzeichnis Ihres Webservers
# mkdir -p /var/www/html/getImage/ # mkdir -p /var/www/html/getImage/images/
Erstellen Sie index.php Datei mit folgendem Inhalt. Stellen Sie sicher, dass alle Verzeichnispfade korrekt sind,
PHP
123456789101112131415 | <?php $url =str_replace('index.php','', $_SERVER['PHP_SELF']);$url =str_replace($url,'',$_SERVER[' REQUEST_URI']);$url =explode('/',$url);$name =array_shift($url);$weburl =array_shift($url); $command ="/usr/bin/wkhtmltoimage --no-images --load-error-handling ignore";$dir_img ="/var/www/html/getImage/images/"; // Bilddateien werden hier gespeichert$ex_cmd ="$command $weburl " . $dir_img . $name;$output =shell_exec($ex_cmd);echo "<img src="/getImage/images/$name" >"; // dies kommentieren, um die Bildanzeige auf Seite ?> | zu deaktivieren
Erstellen Sie nun eine .htaccess Datei in diesem Verzeichnis, um alle Anfragen in die Datei index.php zu verschieben. Stellen Sie sicher, dass Ihr Server für die Verwendung von .htaccess-Dateien aktiviert ist.
# vi /var/www/html/getImage/.htaccess RewriteEngine On RewriteCond %{REQUEST_URI} /images/.+(gif|png|jpg)$ RewriteRule .* - [L] RewriteRule ^.*$ index.php
Jetzt können Sie Bilder erstellen, indem Sie auf URLs wie unten zugreifen
Syntax:
http://youdomain.com/getImage/[imagename]/[site url without http prefix]
Beispiel:
https://tecadmin.net/getImage/123.jpg/yahoo.com