que tienen un bucle de PHP que hace lo siguiente:¿Cómo asegurar la carga de las imágenes antes de generar el PDF?
- Acceder a una página web a través de CURL
- Captura y página interna que requiere un inicio de sesión
- Guardar el código HTML de la página en un archivo local
- Usando wkhtmltopdf, representar la página en formato PDF
el problema que estoy teniendo es que de vez en cuando (quizá ~ 30% de las veces), las imágenes no se mostrarán en el PDF . Si abro uno de los archivos HTML guardados, encontraré que debo ingresar y actualizar manualmente la página para que aparezcan las imágenes.
¿Alguna idea sobre cómo asegurar pragmáticamente la carga de las imágenes? Cosas que he intentado:
sleep(n)
entre cada línea y cada- Adición
--javascript-delay 30000
a mi llamado wkhtmltopdf para asegurarse de que tiene suficiente tiempo para cargar cualquier imagen.
# 1 lo empeoraron considerablemente, y el # 2 no hizo nada en absoluto.
Gracias!
¿Las referencias de las imágenes en el HTML local todavía son válidas? Por lo tanto, tendría que tomar cada imagen del servidor remoto y copiarla en el lugar correcto localmente.Me pregunto si sería más fácil obtener una cookie válida (a través de CURL, etc.) y luego suministrar esto a wkhtmltopdf, que luego va directamente a la página autenticada remotamente. – halfer
wkhtmltopdf en realidad tiene un método para generar una cookie, pero fue una pesadilla trabajar en esta situación particular (de ahí la ruta CURL). Cuando leo en el HTML, estoy reemplazando todas las rutas a la ruta de la imagen remota, lo que definitivamente funciona, ya que puedo abrir el archivo HTML y actualizarlo para ver las imágenes, es como si no hubiera suficiente empuje para obtener la imagen cada vez. En el peor de los casos, creo que puedo intentar que esa cookie funcione con wkhtmltopdf. – Chords
Para un enfoque alternativo, podría intentar usar 'wget' con sus opciones' --page-requisite' y '--convert-links' para descargar el HTML/CSS/Images a una ubicación local, alterando los enlaces al mismo tiempo . A continuación, ejecute el procesador de PDF contra la copia local. – Darien