En raison de la nécessité de fonctionner, j'ai récemment étudié la fonction de la conversion HTML en PDF. La technologie clé du HTML à PDF est de gérer le style CSS complexe dans la page Web.
Mode client : appelez le programme client en réception et utilisez la fonction du programme client pour terminer la conversion de fichiers PDF. Cet outil de test est: wkhtmltopdf et phantomjs. Java Jar Package Solution Analysis Mode: Java Code Analysis CSS Style, la traduction HTML Fichier est un fichier PDF. Cette catégorie de test est: iText, Flying Sauser, PD4ML. JS Front-End Analysis Mode: JS Front-Fend Analysis HTML Le fichier PDF est le fichier PDF.Pour les solutions introduites sur Internet cette fois, combinez les besoins des projets réels, effectuez un par un pour effectuer l'analyse suivante en termes de performances et de fonction.
1. Introduction de la page de testEn visualisant l'introduction de chaque cas de conversion sur Internet, le style HTML simple, le style de table général est pris en charge par les schémas ci-dessus lors de la conversion de fichiers PDF. Cependant, compte tenu des besoins de l'activité réelle, ce test utilise spécialement le style CSS de Bootstrap (V 3.3.6), et la page applique également les nouvelles fonctionnalités de CSS3. Sur la base de cette nouvelle fonctionnalité, écrivez une page HTML statique.
2.WKHTMLTOPDF TestWKHTMLTOPDF est un outil développé à l'aide du moteur de rendu de page Web WebKit pour convertir HTML en PDF, qui peut être intégré à un langage de script multiple pour convertir des documents. Adresse officielle du site Web http://wkhtmltopdf.org/
Caractéristiques techniques: WKHTMLTOPDF peut convertir directement la page Web parcourir le navigateur en PDF. Lorsque vous utilisez le code Java, vous pouvez appeler l'instruction CMD pour compléter la fonction de la page Web sur PDF.
Test de fonction: entrez l'instruction de test directement dans CMD pour afficher la progression du traitement.
Le premier paramètre: le chemin où se trouve Wkhtmltopdf.exe
Le deuxième paramètre: doit être converti en page HTML de PDF
Le troisième paramètre: chemin de fichier PDF et nom de fichier
L'effet d'exportation de la page est le suivant:
Description du test:
On constate que WKHTMLTOPDF a une meilleure prise en charge du style CSS de Bootstap dans son ensemble. Les nouvelles fonctionnalités de CSS3 ne sont pas bien prises en charge pour les images rondes. Certains styles de page échoueront. Pour l'affichage des graphiques, le programme d'exportation du graphique EVERTART rapportera une erreur et ne le prendra pas en charge. Cependant, Echart a un graphique converti en une interface d'image, qui peut être exportée vers le PDF en obtenant l'adresse d'image.
3. Test de phantomjsPhantomjs est un navigateur sans tête basé sur le noyau WebKit, c'est-à-dire qu'il n'y a pas d'interface d'interface utilisateur, c'est-à-dire qu'il s'agit d'un navigateur, mais c'est un clic, un tournage de page, etc. pour des opérations connexes à la conception de la procédure. Il fournit l'interface API JavaScript, c'est-à-dire qu'en écrivant le programme JS, vous pouvez interagir directement avec le noyau WebKit. C / C ++ peut être mieux développé sur la base du développement de WebKit. Il fournit également des installations et utilise des packages de différentes installations de système d'exploitation telles que Windows, Linux, Mac, c'est-à-dire qu'il peut développer et collecter des projets ou des tests de projets automatiques sur différentes plates-formes. Adresse officielle du site Web http://phantomjs.org/
Phantomjs peut être utilisé comme une analyse de page Web. Le test dans CMD est le suivant:
La page de test est guidée comme suit:
Description du test:
Il a été constaté que Phantomjs prend en charge le style de Bootstap. Les nouvelles fonctionnalités de CSS3 ne sont pas bien prises en charge pour les images rondes. Certains styles de page échoueront. Pour l'affichage du graphique Echart, il peut également être exporté directement. L'effet est le suivant:
3.ITEXT et Sauser volantITEXT implémente HTML2PDF, vitesse rapide, mauvaise capacité de correction d'erreur et prend en charge le chinois (nécessitant du HTML pour utiliser le codage Unicode), mais la Chine prend en charge une police chinoise, open source. Flying Sauser implémente HTML2PDF, mauvaise capacité de correction d'erreur, prend en charge une variété de polices chinoises (certains styles ne peuvent pas être reconnus), open source.
Caractéristiques techniques: Analyse et traitement du style HTML CSS basé sur la programmation Java, ne prend actuellement en charge que des pages et des styles plus simples. Pour le style de CSS3 et la compatibilité complexe du style CSS, le CSS3 est extrêmement médiocre. Lorsque le contenu de la page est long, le temps de traitement est lent. Adresse de référence: https://code.google.com/archive/p/flying-saucer/
Résultats du test: La page de test de cette expérience ne peut pas sortir.
Description du test:
Il est constaté que les deux projets open source d'IText et de Sauser volant ne sont pas compatibles avec CSS3. Pour les tables simples, les exportations de données statistiques et les technologies mises à jour incluent la table bootstrap, l'exportation de la table DataGrid EasyUI. Ce schéma introduit en ligne n'est pas recommandé.
4.PD4ML TestPD4ML est une bibliothèque de classe de Java pur. Site Web de référence: http://www.pd4ml.com
L'avantage du logiciel est:
Les balises HTML prises en charge et les attributs CSS sont relativement pleins et la distorsion de conversion est relativement faible. La tolérance aux défauts des balises de fichiers Web et des erreurs de grammaire CSS est meilleure. Sans contrôle supplémentaire, prends en charge la sortie de transformation de l'image.
L'inconvénient du logiciel est:
Sans open source, la dernière version de démonstration, après téléchargement et test, il est constaté que la conversion chinoise n'est pas prise en charge. Vous devez acheter une version commerciale. (Voici très pit. Tester les problèmes brouillés ne peut pas être disponible, et on constate qu'il n'est pas pris en charge plus tard). Certaines des anciennes versions après la fissuration peuvent résoudre le problème brouillé, mais le style CSS pris en charge n'est pas complet.
Résultats des tests:
Description du test:
La nouvelle version de chinois a brouillé, mais prend en charge certains styles CSS. Après la déchiffre de l'ancienne version, la compatibilité du style de l'interface est médiocre et la prise en charge de Bootsrtap est faible. Considérant qu'il s'agit d'un logiciel de charge et que les performances ne sont pas parfaites.
5.html2Canvas TestHTML2CANVAS est une très bonne bibliothèque de classe JavaScript. HTML2Canvas utilise les informations de style DOM et d'élément de la page et la rend dans une image de toile pour atteindre la fonction de la capture d'écran de la page. Il n'a pas besoin de rendu du serveur. Lorsque le navigateur ne prend pas en charge Canvas, FlashCanvas ou ExploreCanvas seront utilisés à la place. Les navigateurs suivants peuvent bien prendre en charge le script: Firefox 3.5+, Google Chrome, la nouvelle version de l'opéra, IE9 au-dessus du navigateur. Parce que chaque navigateur rend la page de différentes manières, les images générées ne sont pas les mêmes. Bien qu'il soit toujours au stade de développement, il vaut toujours la peine d'attendre avec impatience. Cette fiche dépend de la prise jQuery -in, il est recommandé d'utiliser la dernière version.
Ne prends pas en charge les images croisées et ne peut pas utiliser une partie de la fiche du navigateur sans prendre en charge les images SVG, sans prendre en charge Flash, ne prends pas en charge iFream (peut modifier le code d'origine de JS, prends en charge ifream)
Lorsque vous utilisez HTML2Canvas pour cette époque, j'ai constaté que de nombreuses pages d'articles peuvent prendre des captures d'écran normalement, y compris les graphiques Echart. Seules les nouvelles fonctionnalités d'une petite quantité de CSS3 ne sont pas prises en charge. L'effet de capture d'écran est meilleur. Cependant, lors des tests, un problème mortel a été trouvé. Après l'analyse de suivi, il a été constaté que la fonction JS de HTML2Canvas pour gérer le style CSS qu'il ne peut pas reconnaître. Surtout pour les modules cachés et affichés, il prend en charge hostile.
L'effet de la capture d'écran de la page est le suivant:
Cependant, le CSS de la page d'origine échoue, la page semble anormale, le style caché, l'affichage de style affiché est chaotique.
Description du test:
Il a été constaté que HTML2CANVAS prend en charge le style de Bootstap mieux. Les nouvelles fonctionnalités de CSS3 ne sont pas bien prises en charge pour les images rondes. Son principal avantage est le frontal léger.
6. RésuméGrâce au test des cas ci-dessus, la plupart des transformations HTML couramment utilisées en PDF introduites en ligne. En analysant le principe de ces méthodes, les conclusions suivantes peuvent être obtenues:
La page Web HTML est complètement convertie en PDF, et toutes les solutions sont insuffisantes. S'il s'agit uniquement d'une page de formulaire, le style HTML n'adopte pas autant que possible l'attribut de CSS3. Le style HTML avant se développe rapidement, les nouvelles fonctionnalités de CSS3 ont de bons effets, CSS définit de nouvelles règles et grammaires. Les classes de conversion Java telles que ITEXT et Flying Sauser ne peuvent pas du tout être compatibles avec ces changements, car ils ne peuvent pas écrire les fonctions de conversion, et ces projets open source sont une technologie plus ancienne. L'essence de PD4ML est également le style du traitement Java CSS. Mais il ne supporte pas non plus un petit nombre de styles CSS. Et le problème brouillé chinois est gênant. Pour le mode du noyau du navigateur, Phantomjs et WKHTMLTOPDF sont plus puissants. Le mode de capture d'écran de HTML2Canvas est flexible et est un outil de capture d'écran avant léger. À l'heure actuelle, certaines fonctions sont incomplètes, mais l'effet global n'est pas mauvais. Capture d'écran au PDF.
Ce qui précède est tout le contenu de cet article.