Heim  >  Artikel  >  Java  >  Java verwendet wkhtmltox, um HTML-Code zum Generieren von PDF-Dokumenten oder Bildern zu implementieren

Java verwendet wkhtmltox, um HTML-Code zum Generieren von PDF-Dokumenten oder Bildern zu implementieren

高洛峰
高洛峰Original
2016-12-02 16:13:452912Durchsuche

Konvertieren Sie den HTML-Code aufgrund der Projektanforderungen zum Speichern in PDF oder Bild. Ich habe Flying Saucer zum ersten Mal verwendet, um HTML-Codes in PDF-Dokumente zu generieren. In dieser Zeit bin ich auch auf Probleme mit der chinesischen Unterstützung und den Bildpfaden gestoßen, die meiner Meinung nach ebenfalls gelöst wurden reicht aus, aber während des Tests stellte ich fest, dass es Probleme mit den von einigen PDF-Dokumenten generierten Stilen gab. Bei der Suche stellte ich fest, dass es sich bei Flying Saucer um eine ältere Technologie handelt und niemand sie mehr verwendet, sodass sie nicht sehr benutzerfreundlich ist CSS3.0-Unterstützung.

Die Funktion muss implementiert werden und es ist unrealistisch, anderen den HTML-Code ändern zu lassen. Probieren Sie daher andere Technologien aus. Später dachte ich, dass es nützlich wäre, Bilder zu generieren, also habe ich danach gesucht und festgestellt, dass ich CSSBOX verwenden kann, um HTML-Codes in Bilder zu generieren. Dann habe ich es ausprobiert und tatsächlich hat es funktioniert in das System ein. Es gab kein Problem, aber es kam erneut zu einer Tragödie. Eine Seite verwendete CSS3, um eine diagonale gerade Linie darzustellen, aber die CSSBOX konnte nicht konvertiert werden.

Tatsächlich wusste ich am Anfang, dass wkhtmltopdf HTML-Codes in PDF-Dokumente generieren kann, aber dies erfordert tatsächlich die Installation einer Software und den Aufruf dieser Software in Java-Code, um die Konvertierung durchzuführen dass es keine andere direkte Technologie gab. Es ist praktisch, das JAR-Paket einzuführen, also habe ich es nicht ausprobiert. Jetzt gibt es wirklich keinen anderen Weg, also versuchen wir es. Da ich jetzt HTML-Code in Bilder generieren möchte, verwende ich wkhtmltoimage. Tatsächlich gibt es keinen Unterschied. Bei der Installation der wkhtmltox-Software werden wkhtmltopdf und wkhtmltoimage gleichzeitig installiert.

Bei der Verwendung von wkhtmltoimage gab es viele Umwege, vor allem weil ich mit Linux nicht vertraut war und bei der Installation auf viele Probleme stieß. Nun möchte ich die Erkenntnisse, die ich gewonnen habe, mit Ihnen teilen, damit Sie darauf zurückgreifen können. Es ist nur meine persönliche Meinung und ich entschuldige mich für etwaige Ungenauigkeiten. Als Nächstes stellen wir die Verwendung des Aufrufs dieser Soft Armor in Java im Detail vor. Speziell unterteilt in Windows-Umgebung und Linux-Umgebung.

1. Software-Download-Adresse:

Offizielle Website-Download-Adresse: http://wkhtmltopdf.org/downloads.html

finden Sie auf dieser Seite Laden Sie die neueste Version von wkhtmltox herunter.

Ich verwende nicht die neueste Version. Die Download-Adresse lautet: http://download.gna.org/wkhtmltopdf/0.12/0.12.2/

2. Installation der Windows-Umgebung

Ich werde nicht näher auf die Installationssoftware für die Windows-Umgebung eingehen, die ich unter http://download.gna.org/wkhtmltopdf/0.12/ installiert habe. 0.12.2/ URL, laden Sie die Version von wkhtmltox-0.12.2_msvc2013-win64.exe herunter. Wenn Sie eine 32-Bit-Version haben, können Sie die 32-Bit-Version zum Herunterladen auswählen. Nach Abschluss der Installation finden Sie wkhtmltopdf.exe und wkhtmltoimage.exe im Installationsverzeichnis. Diese beiden Ausführungsprogramme werden zum Konvertieren von PDFs und Bildern verwendet. Wir werden später darüber sprechen, wie sie aufgerufen werden.

3. Installation der Linux-Umgebung

Ich habe wkhtmltox-0.12 unter http://download.gna.org/wkhtmltopdf/0.12/0.12.2/ Adresse .2_linux heruntergeladen -centos6-i386.rpm Diese Version des RPM-Pakets ist mit CentOS6.5 32-Bit ausgestattet. Sie können die aktuelle Situation hier überprüfen Laden Sie die der 64-Bit-Version entsprechende Version herunter und wählen Sie sie entsprechend der tatsächlichen Situation aus.

Als Download-Methode können Sie wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-centos6-i386.rpm direkt zum Herunterladen verwenden, wenn es Ihnen gefällt Sie können es auch zuerst auf die lokale Maschine herunterladen und dann unter Linux mit rz -be hochladen. Beachten Sie, dass Sie andernfalls den Befehl -be hinzufügen müssen, um große Dateien hochzuladen Der Upload wird nicht erfolgreich sein. Wenn es in Ihrem Linux keinen rz-Befehl gibt, können Sie den Befehl yum -y install lrzsz verwenden, um die Befehle rz und sz zu installieren.

Starten Sie die Installation unten:

1) Geben Sie das Verzeichnis ein, in das das RPM-Paket heruntergeladen wurde, und führen Sie rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386 aus. rpm-Befehl. Das Ergebnis sieht wie folgt aus:

Java verwendet wkhtmltox, um HTML-Code zum Generieren von PDF-Dokumenten oder Bildern zu implementieren

Der Grund für den Fehler ist das Fehlen der Abhängigkeiten xorg-x11-fonts-Type1 und xorg-x11-fonts-75dpi Wir müssen zuerst die Abhängigkeiten installieren.

2) Installieren Sie xorg-x11-fonts-Type1-Abhängigkeiten: yum -y install xorg-x11-fonts-Type1.

3) Installieren Sie xorg-x11-fonts-75dpi-Abhängigkeiten: yum -y install xorg-x11-fonts-75dpi.

4) Installieren Sie wkhtmltox erneut: rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm, OK, die Installation ist erfolgreich. Wenn Ihnen während der Installation andere Abhängigkeiten fehlen, müssen Sie zuerst die fehlenden Abhängigkeiten installieren und dann wkhtmltox installieren. Die Methode zum Abfragen fehlender Abhängigkeiten ist die Yum-Suche xxxx. xxxx ist das fehlende Abhängigkeitsschlüsselwort. Suchen Sie dann aus den Abfrageergebnissen die richtige Yum-Quelle für die Installation.

5) Nachdem die Installation abgeschlossen ist, können wir wkhtmltoimage http://www.baidu.com 1.jpg oder wkhtmltopdf http://www.baidu.com 1.pdf verwenden, um zu testen, ob die Installation erfolgreich ist erfolgreich.

4. Java-Programmaufruf

Beim Aufruf von Java müssen keine zusätzlichen Jar-Pakete hinzugefügt werden.

Java-Aufrufcode:

public class CustomWKHtmlToPdfUtil {

    public String getCommand(String sourceFilePath, String targetFilePath) {
        String system = System.getProperty("os.name");
        if(system.contains("Windows")) {
            return "D:\\Program Files\\wkhtmltopdf\\wkhtmltoimage.exe " + sourceFilePath + " " + targetFilePath;
        }else if(system.contains("Linux")) {
            return "wkhtmltoimage " + sourceFilePath + " " + targetFilePath;
        }
        return "";
    }

    public static void main(String[] args) throws Exception{
        CustomWKHtmlToPdfUtil util = new CustomWKHtmlToPdfUtil();
        String command = util.getCommand("e:/html/result.html", "e:/html/result.jpg");
        Process process = Runtime.getRuntime().exec(command);
        process.waitFor();  //这个调用比较关键,就是等当前命令执行完成后再往下执行
        System.out.println("执行完成");
    }
}

   其实就是使用Java调用cmd的执行命令,但是调用要区分Windows和Linux系统,如果是Windows系统,则必须要指定wkhtmltoimage或者wkhtmltopdf的位置,我在Windows的安装位置是D:\Program Files\wkhtmltopdf,因此我在上面调用wkhtmltoimage时使用的路径是D:\Program Files\wkhtmltopdf\wkhtmltoimage.exe。在Linux环境下,由于软件在安装时,会把wkhtmltopdf和wkhtmlimage安装到系统命令中,因此不需要指定安装路径,直接调用就可以了。

    我比较推荐使用wkhtmltoimage生成JPG图片,我调用wkhtmltopdf生成PDF时会有点问题。以上是我的一些经历,希望对大家有用!


Stellungnahme:
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