Debido a la necesidad de trabajar, recientemente estudié la función de la conversión de HTML en PDF. La tecnología clave de HTML a PDF es cómo manejar el estilo CSS complejo en la página web.
Modo cliente : llame al programa del cliente en recepción y use la función del programa cliente para completar la conversión de archivos PDF. Esta herramienta de prueba es: wkhtmltopdf y phantomjs. Modo de análisis de solución del paquete Java JAR: análisis de código Java CSS estilo, el archivo HTML de traducción es el archivo PDF. Esta categoría de prueba es: ITEXT, Sauser Flying, PD4ML. Modo de análisis JS Front: Análisis JS Front -ERN El archivo HTML es el archivo PDF.Para las soluciones introducidas en Internet esta vez, combine las necesidades de los proyectos reales, haga una por una para realizar el siguiente análisis en términos de rendimiento y función.
1. Introducción de la página de pruebaAl ver la introducción de cada caso de conversión en Internet, el estilo HTML simple, el estilo de tabla general es compatible con los esquemas anteriores al realizar la conversión de archivos PDF. Sin embargo, teniendo en cuenta las necesidades del negocio real, esta prueba utiliza especialmente el estilo CSS de Bootstrap (V 3.3.6), y la página también aplica las nuevas características de CSS3. Según esta nueva característica, escriba una página HTML estática.
2. Prueba de WKHTMLTOPDFWKHTMLTOPDF es una herramienta desarrollada utilizando el motor de renderizado de la página web WebKit para convertir HTML en PDF, que puede integrarse con múltiples lenguajes de script para convertir documentos. Dirección del sitio web oficial http://wkhtmltopdf.org/
Características técnicas: WKHTMLTOPDF puede convertir directamente la página web en el navegador en un PDF. Al usar el código Java, puede llamar a la instrucción CMD para completar la función de la página web a PDF.
Prueba de función: ingrese la instrucción de prueba directamente en CMD para ver el progreso del procesamiento.
El primer parámetro: la ruta donde se encuentra wkhtmltopdf.exe
El segundo parámetro: debe convertirse en la página HTML de PDF
El tercer parámetro: ruta del archivo PDF y nombre de archivo
El efecto de exportación de la página es el siguiente:
Descripción de la prueba:
Se encuentra que WKHTMLTOPDF tiene un mejor soporte para el estilo CSS de Bootstap en su conjunto. Las nuevas características de CSS3 no son bien compatibles con imágenes redondas. Algunos estilos de página fallarán. Para la pantalla del gráfico, el programa de exportación del gráfico EvertArt informará un error y no lo admitirá. Sin embargo, Echart tiene un gráfico convertido en una interfaz de imagen, que se puede exportar al PDF obteniendo la dirección de la imagen.
3. Prueba de phantomjsPhantomJS es un navegador sin cabeza basado en el núcleo WebKit, es decir, no hay interfaz de interfaz de usuario, es decir, es un navegador, pero es un clic a través, giro de página, etc. para operaciones relacionadas con el diseño del procedimiento. Proporciona la interfaz API de JavaScript, es decir, al escribir el programa JS, puede interactuar directamente con el núcleo WebKit. C/C ++ se puede desarrollar mejor en función del desarrollo de WebKit. También proporciona instalación y uso de paquetes de diferentes instalaciones del sistema operativo como Windows, Linux, Mac, es decir, puede desarrollar y recopilar proyectos o pruebas de proyectos automáticas en diferentes plataformas. Dirección del sitio web oficial http://phantomjs.org/
PhantomJS se puede utilizar como análisis de la página web. La prueba en CMD es la siguiente:
La página de prueba se guía de la siguiente manera:
Descripción de la prueba:
Se descubrió que PhantomJS admite el estilo de Bootstap. Las nuevas características de CSS3 no son bien compatibles con imágenes redondas. Algunos estilos de página fallarán. Para la pantalla del gráfico Echart, también se puede exportar directamente. El efecto es el siguiente:
3.Itext y Sauser FlyingITEXT implementa HTML2PDF, velocidad rápida, mala capacidad de corrección de errores y admite chino (que requiere que HTML use la codificación de Unicode), pero China admite una fuente china, código abierto. Flying Sauser implementa HTML2PDF, mala capacidad de corrección de errores, admite una variedad de fuentes chinas (algunos estilos no se pueden reconocer), código abierto.
Características técnicas: Análisis y procesamiento del estilo CSS HTML basado en la programación Java, actualmente solo admite páginas y estilos más simples. Para el estilo de CSS3 y la compatibilidad de estilo CSS compleja, el CSS3 es extremadamente pobre. Cuando el contenido de la página es largo, el tiempo de procesamiento es lento. Dirección de referencia: https://code.google.com/archive/p/flying-saucer/
Resultados de la prueba: la página de prueba de este experimento no puede salir.
Descripción de la prueba:
Se encuentra que los dos proyectos de código abierto de ITEXT y Flying Sauser no son básicamente compatibles con CSS3. Para tablas simples, las exportaciones de datos estadísticos y las tecnologías actualizadas incluyen la tabla de arranque, la exportación de la tabla de datagrida EasyUI. No se recomienda este esquema introducido en línea.
4. Prueba de PD4MLPD4ML es una biblioteca de clase de Java puro. Sitio web de referencia: http://www.pd4ml.com
La ventaja del software es:
Las etiquetas HTML compatibles y los atributos CSS están relativamente llenos, y la distorsión de conversión es relativamente pequeña. La tolerancia de fallas de las etiquetas de archivo web y los errores de gramática CSS es mejor. Sin control adicional, admite la salida de transformación de la imagen.
La desventaja del software es:
Sin código abierto, la última versión de demostración, después de descargar y probar, se descubre que la conversión china no es compatible. Debes comprar una versión comercial. (Aquí hay muy hoyos. La prueba de problemas confusos no puede estar disponible, y se encuentra que no es compatible más adelante). Algunas de las versiones antiguas después del agrietamiento pueden resolver el problema confuso, pero el estilo CSS compatible no está completo.
Resultados de la prueba:
Descripción de la prueba:
La nueva versión de chino confusión, pero admite algunos estilos CSS. Después de la descifración de la versión anterior, la compatibilidad de estilo de la interfaz es deficiente, y el soporte para BootsRTAP es bajo. Teniendo en cuenta que es un software de carga y el rendimiento no es perfecto.
5.HTML2CANVASHTML2Canvas es una buena biblioteca de clases JavaScript. HTML2Canvas utiliza la información de estilo DOM y elemento de la página y la convierte en una imagen de lienzo para lograr la función de la captura de pantalla de la página. No necesita ninguna representación del servidor. Cuando el navegador no admite el lienzo, FlashCanvas o Explorercanvas se utilizarán en su lugar. Los siguientes navegadores pueden admitir el script: Firefox 3.5+, Google Chrome, la nueva versión de Opera, IE9 anterior. Debido a que cada navegador hace que la página sea diferente maneras, las imágenes generadas no son las mismas. Aunque todavía está en la etapa de desarrollo, todavía vale la pena esperar. Este plug -in depende del jQuery plug -in, se recomienda usar la última versión.
No admite imágenes de dominio cruzado y no puede usar parte del plug -en el navegador sin soportar las imágenes SVG, no admitir flash, no admite Ifream (puede modificar el código original de JS, admitir iFream)
Al usar HTML2Canvas para este tiempo, descubrí que muchas páginas de elementos pueden tomar capturas de pantalla normalmente, incluidas las gráficos de Echart. Solo las nuevas características de una pequeña cantidad de CSS3 no son compatibles. El efecto de captura de pantalla es mejor. Sin embargo, al probar, se encontró un problema fatal. Después del análisis de seguimiento, se descubrió que la función JS de HTML2Canvas para manejar el estilo CSS que no puede reconocer. Especialmente para módulos ocultos y mostrados, admite hostil.
El efecto de la captura de pantalla de la página es el siguiente:
Sin embargo, el CSS de la página original falla, la página parece anormal, el estilo oculto, la pantalla de estilo mostrada es caótica.
Descripción de la prueba:
Se descubrió que HTML2Canvas admite mejor el estilo de Bootstap. Las nuevas características de CSS3 no son bien compatibles con imágenes redondas. Su principal ventaja es la parte delantera ligera.
6. ResumenA través de la prueba de los casos anteriores, la mayoría de las transformaciones HTML comúnmente utilizadas en PDF introducidas en línea son una conversión HTML simple disponible, pero en aplicaciones prácticas, todavía hay muchos problemas y difíciles de aplicar. Al analizar el principio de estos métodos, se pueden obtener las siguientes conclusiones:
La página web HTML se convierte completamente en PDF, y todas las soluciones son insuficientes. Si es solo una página de formulario, el estilo HTML no adopta el atributo de CSS3 tanto como sea posible. HTML Front -Ed Style se está desarrollando rápidamente, las nuevas características de CSS3 tienen buenos efectos, CSS define nuevas reglas y gramática. Las clases de conversión de Java, como Itext y Flying Sauser, no pueden ser compatibles con estos cambios, porque no pueden escribir las funciones de conversión en el tiempo, y estos proyectos de código abierto son tecnología más antigua. La esencia de PD4ML también es el estilo de Java Processing CSS. Pero tampoco es compatible con un pequeño número de estilos CSS. Y el problema de los confusos chinos es inconveniente. Para el modo de núcleo del navegador del cliente, PhantomJS y WKHTMLTOPDF son más potentes. El modo de captura de pantalla de HTML2Canvas es flexible y es una herramienta de captura de pantalla delantera liviana. En la actualidad, algunas de las funciones están incompletas, pero el efecto general no es malo. Captura de pantalla al PDF.
Lo anterior es todo el contenido de este artículo.