Aufgrund der Bedürfnisse zu arbeiten, habe ich kürzlich die Funktion der HTML -Konvertierung in PDF untersucht. Die wichtigste Technologie von HTML zu PDF ist die Umstellung des komplexen CSS -Stils in der Webseite.
Client -Modus : Rufen Sie das Client -Programm in der Rezeption an und verwenden Sie die Funktion des Client -Programms, um die PDF -Dateikonvertierung abzuschließen. Dieses Testwerkzeug lautet: WKHTMLTOPDF und Phantomjs. Java -Jar -Paket -Lösungs -Analysemodus: Java -Code -Analyse CSS -Stil, Übersetzung HTML -Datei ist eine PDF -Datei. Diese Testkategorie lautet: Itext, Flying Sauler, PD4ML. JS Front -end -Analysemodus: JS Front -End -Analyse HTML -Datei ist PDF -Datei.Für die diesmal im Internet eingeführten Lösungen kombinieren Sie die Bedürfnisse der tatsächlichen Projekte und führen nacheinander die folgende Analyse in Bezug auf Leistung und Funktion durch.
1. Testseite EinführungDurch Anzeigen der Einführung jedes Konvertierungsfalles im Internet, dem einfachen HTML -Stil, wird der allgemeine Tabellenstil von den oben genannten Schemata bei der Konvertierung von PDF -Dateien unterstützt. In Anbetracht der Bedürfnisse des tatsächlichen Geschäfts verwendet dieser Test jedoch speziell den CSS -Stil von Bootstrap (v 3.3.6), und die Seite wendet auch die neuen Funktionen von CSS3 an. Schreiben Sie basierend auf dieser neuen Funktion eine statische HTML -Seite.
2.WKHTMLTOPDF -TestWKHTMLTOPDF ist ein Tool, das mit der WebKit -Webseite Rendering Engine entwickelt wurde, um HTML in PDF umzuwandeln, das in mehrere Skriptsprachen integriert werden kann, um Dokumente zu konvertieren. Offizielle Website -Adresse http://wkhtmltopdf.org/
Technische Funktionen: WKHTMLTOPDF kann die Webseiten direkt in den Browser in eine PDF konvertieren. Wenn Sie den Java -Code verwenden, können Sie die CMD -Anweisung aufrufen, um die Funktion der Webseite zu PDF zu vervollständigen.
Funktionstest: Geben Sie die Testanweisung direkt in CMD ein, um den Verarbeitungsfortschritt anzuzeigen.
Der erste Parameter: der Pfad, auf dem sich wkhtmltopdf.exe befindet
Der zweite Parameter: muss in die HTML -Seite von PDF konvertiert werden
Der dritte Parameter: PDF -Dateipfad und Dateiname
Der Exporteffekt der Seite ist wie folgt:
Testbeschreibung:
Es wurde festgestellt, dass WKHTMLTOPDF den CSS -Stil von BootStap als Ganzes besser unterstützt. Die neuen Funktionen von CSS3 werden für runde Bilder nicht gut unterstützt. Einige Seitenstile scheitern. Für die Diagrammanzeige meldet das Exportprogramm des EverArT -Diagramms einen Fehler und unterstützt es nicht. Echart hat jedoch ein Diagramm in eine Bildschnittstelle konvertiert, die durch Erhalten der Bildadresse in die PDF exportiert werden kann.
3.Phantomjs TestPhantomjs ist ein kopfloser Browser, der auf dem Webkit -Kernel basiert, dh es gibt keine UI -Schnittstelle, dh es ist ein Browser, aber es handelt sich um eine Klick, durch die Seite, die zugehörige Vorgänge mit dem Verfahrensdesign zugehörigen Vorgängen. Es bietet die JavaScript -API -Schnittstelle, dh durch das Schreiben des JS -Programms können Sie direkt mit dem Webkit -Kernel interagieren. C/C ++ kann basierend auf der Entwicklung von Webkit entwickelt werden. Es bietet auch Installations- und Verwenden von Paketen verschiedener Betriebssysteminstallationen wie Windows, Linux, Mac, dh es kann Projekte entwickeln und sammeln oder automatische Projekttests auf verschiedenen Plattformen erfassen. Offizielle Website -Adresse http://phantomjs.org/
PhantomJs können als Webseitenanalyse verwendet werden. Der Test in CMD lautet wie folgt:
Die Testseite wird wie folgt geführt:
Testbeschreibung:
Es wurde festgestellt, dass Phantomjs den Stil von BootStap unterstützt. Die neuen Funktionen von CSS3 werden für runde Bilder nicht gut unterstützt. Einige Seitenstile scheitern. Für die Echart -Diagrammanzeige kann es auch direkt exportiert werden. Der Effekt ist wie folgt:
3.Irtext und fliegender WacherITEXT implementiert HTML2PDF, schnelle Geschwindigkeit, schlechte Fehlerkorrekturfähigkeit und unterstützt Chinesen (wodurch HTML Unicode -Codierung verwendet wird), aber China unterstützt eine chinesische Schrift, Open Source. Flying Sauser implementiert HTML2PDF, schlechte Fehlerkorrekturfähigkeit, unterstützt eine Vielzahl chinesischer Schriftarten (einige Stile können nicht erkannt werden), Open Source.
Technische Funktionen: Analyse und Verarbeitung des HTML -CSS -Stils basierend auf Java -Programmierungen, der derzeit nur einfachere Seiten und Stile unterstützt. Für den Stil von CSS3 und die komplexe Kompatibilität im CSS -Stil ist der CSS3 extrem schlecht. Wenn der Seiteninhalt lang ist, ist die Verarbeitungszeit langsam. Referenzadresse: https://code.google.com/archive/p/flying-saucer/
Testergebnisse: Die Testseite dieses Experiments kann nicht herauskommen.
Testbeschreibung:
Es wurde festgestellt, dass die beiden Open -Source -Projekte von Itext und Flying Sauler im Grunde nicht mit CSS3 kompatibel sind. Für einfache Tabellen umfassen die Exporte statistischer Daten und aktualisierte Technologien die Bootstrap -Tabelle, EasyUi Datagrid -Tabellenexport. Dieses online eingeführte Schema wird nicht empfohlen.
4.PD4ML -TestPD4ML ist eine Klassenbibliothek mit reinem Java. Referenzwebsite: http://www.pd4ml.com
Der Vorteil der Software ist:
Die unterstützten HTML -Tags und CSS -Attribute sind relativ voll, und die Konvertierungsverzerrung ist relativ gering. Die Fehlertoleranz von Webdatei -Tags und CSS -Grammatikfehlern ist besser. Unterstützen Sie ohne zusätzliche Kontrolle die Transformationsausgabe des Bildes.
Der Nachteil der Software ist:
Open Source, die neueste Demo -Version, nach dem Herunterladen und Test, wird festgestellt, dass die chinesische Konvertierung nicht unterstützt wird. Sie müssen eine kommerzielle Version kaufen. (Hier sind sehr Gruben. Testen von Problemen können nicht verfügbar sein, und es wird festgestellt, dass sie später nicht unterstützt wird.) Einige der alten Versionen nach dem Knacken können das verstümmelte Problem lösen, aber der unterstützte CSS -Stil ist nicht vollständig.
Testergebnisse:
Testbeschreibung:
Die neue Version von Chinese verstümmelt, unterstützt aber einige CSS -Stile. Nach der Deciplin der alten Version ist die Stilkompatibilität der Schnittstelle schlecht, und die Unterstützung für Bootsrtap ist niedrig. In Anbetracht der Tatsache, dass es sich um eine Ladesoftware handelt, ist die Leistung nicht perfekt.
5.HTML2CANVAS -TestHTML2CANVAS ist eine ziemlich gute JavaScript -Klassenbibliothek. HTML2CANVAS verwendet die DOM- und Element -Stilinformationen der Seite und verwirklicht sie in ein Canvas -Bild, um die Funktion des Seiten -Screenshots zu erreichen. Das gesamte Bild wird auf dem Client -Browser keine Rendering vom Server benötigt. Wenn der Browser keine Leinwand unterstützt, werden stattdessen FlashCanvas oder ExplorerCanvas verwendet. Die folgenden Browser können das Skript unterstützen: Firefox 3.5+, Google Chrome, Operas neue Version, IE9 über dem Browser. Da jeder Browser die Seite unterschiedliche Arten macht, sind die generierten Bilder nicht gleich. Obwohl es sich noch in der Entwicklungsphase befindet, ist es immer noch wert, sich darauf zu freuen. Dieser Stecker -In hängt von der Jquery -Stecker ab. Es wird empfohlen, die neueste Version zu verwenden.
Unterstützen Sie keine Cross -Domain -Bilder und können Sie nicht einen Teil des Browser -Plugs verwenden, ohne SVG -Bilder zu unterstützen, Flash nicht zu unterstützen. Unterstützen Sie IFREAM nicht (können Sie den ursprünglichen Code von JS ändern, IFREAM unterstützen).
Bei der Verwendung von HTML2CANVAs für diese Zeit stellte ich fest, dass viele Elementseiten normalerweise Screenshots aufnehmen können, einschließlich Echart -Diagramme. Nur die neuen Merkmale einer kleinen Menge CSS3 werden nicht unterstützt. Der Screenshot -Effekt ist besser. Beim Testen wurde jedoch ein tödliches Problem gefunden. Nach der Tracking -Analyse wurde festgestellt, dass die JS -Funktion von html2canvas den CSS -Stil, den sie nicht erkennen kann, umgehen kann. Besonders für versteckte und angezeigte Module unterstützt es unfreundlich.
Der Effekt des Seiten -Screenshots ist wie folgt:
Die CSS der Originalseite scheitert jedoch, die Seite erscheint abnormal, der versteckte Stil, das angezeigte Stil Display ist chaotisch.
Testbeschreibung:
Es wurde festgestellt, dass HTML2canvas den Stil von BootStap besser unterstützt. Die neuen Funktionen von CSS3 werden für runde Bilder nicht gut unterstützt. Der Hauptvorteil ist das leichte Frontend.
6. ZusammenfassungDurch den Test der obigen Fälle sind die meisten der häufig verwendeten HTML -Transformationen zu PDF, die online eingeführt wurden. Durch die Analyse des Prinzips dieser Methoden können die folgenden Schlussfolgerungen erhalten werden:
Die HTML -Webseite wird vollständig in PDF konvertiert und alle Lösungen sind nicht ausreichend. Wenn es sich nur um eine Form -Seite handelt, übernimmt der HTML -Stil das Attribut von CSS3 nicht so weit wie möglich. Der HTML -Front -End -Stil entwickelt sich rasant, die neuen Funktionen von CSS3 haben gute Auswirkungen, CSS definiert neue Regeln und Grammatik. Die Java -Konvertierungsklassen wie Itext und Flying Sauler können mit diesen Änderungen nicht kompatibel sein, da sie die Conversion -Funktionen nicht rechtzeitig schreiben können, und diese Open -Source -Projekte sind ältere Technologie. Die Essenz von PD4ML ist auch der Stil von Java -Verarbeitungs -CSS. Es unterstützt aber auch nicht eine kleine Anzahl von CSS -Stilen. Und das chinesische verstümmte Problem ist unpraktisch. Für den Client -Browser -Kernel -Modus sind Phantomjs und WKHTMLTOPDF leistungsfähiger. Der Screenshot -Modus von HTML2CANVAs ist flexibel und ein leichtgewichtiges Screenshot -Tool vorne. Gegenwärtig sind einige der Funktionen unvollständig, der Gesamteffekt ist jedoch nicht schlecht. Screenshot an die PDF.
Das oben genannte Inhalt dieses Artikels.