Solución:
Prueba esto: Gracias a https://github.com/barryvdh/laravel-snappy/issues/255#issuecomment-628815194
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
spandata = document.getElementsByClassName("spandata")
spandatadate = document.getElementsByClassName("spandatadate")
function init() {
google.charts.load('current', {packages: ['corechart']});
var interval = setInterval(function() {
if ( google.visualization !== undefined && google.visualization.DataTable !== undefined && google.visualization.PieChart !== undefined ){ clearInterval(interval);
window.status="ready";
drawCharts();
}
}, 100);
}
function drawCharts() { // PROCESSING ... }
</script>
Donde drawCharts () es su función que procesa el dibujo, etc.
Finalmente funcionó para mí, así que … ¡espero que funcione para ti!
Todavía no puedo saber cuál es el problema, pero supongo que se debe a que la API del gráfico no se puede cargar rápidamente, por lo que wkhtmltopdf está procesando la conversión ANTES de la carga del gráfico. Esperar que DOM esté listo + establecer un intervalo parece solucionar el problema (¡por ahora!)
EDITAR 21/06/2020
Olvidé decir: http://www.google.com/jsapi redirige a una página HTTPS para gstatic (https://www.gstatic.com/charts/loader.js) que es el nuevo lugar para la API JS de Google. Entonces, si desea que wkhtmltopdf funcione, debe instalar el paquete libssl
sudo apt-get install libssl1.0-dev
Puedes probar si funciona con
wkhtmltopdf https://google.com google.pdf
Si no, tendrá este tipo de salida:
Loading pages (1/6)
QSslSocket: cannot resolve CRYPTO_num_locks ] 10%
QSslSocket: cannot resolve CRYPTO_set_id_callback
QSslSocket: cannot resolve CRYPTO_set_locking_callback
QSslSocket: cannot resolve sk_free
QSslSocket: cannot resolve sk_num
QSslSocket: cannot resolve sk_pop_free
QSslSocket: cannot resolve sk_value
QSslSocket: cannot resolve SSL_library_init
QSslSocket: cannot resolve SSL_load_error_strings
QSslSocket: cannot resolve SSLv3_client_method
QSslSocket: cannot resolve SSLv23_client_method
QSslSocket: cannot resolve SSLv3_server_method
QSslSocket: cannot resolve SSLv23_server_method
QSslSocket: cannot resolve X509_STORE_CTX_get_chain
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
QSslSocket: cannot resolve SSLeay
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function sk_num
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_library_init
Error: Failed loading page https://google.com (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: UnknownNetworkError
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
Después de instalar libssl, el resultado de la prueba google.pdf debe ser
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
Estoy usando:
Laravel 5.7
PHP 7.1.3
barryvdh/laravel-dompdf ^0.8.5
barryvdh/laravel-snappy ^0.4.6
wkhtmltopdf 0.12.4 (with patched qt)
Ubuntu 18.04 LTS
Tuve el mismo problema: obtenía un gráfico en blanco o un mensaje de error “Indefinido no es una función”.
Después de 3 días de probar todas las opciones posibles, lo que funcionó para mí es “volver” a una versión anterior de Google Charts.
<script>google.load("visualization", "44", {packages:["corechart"]});</script>
Anteriormente estaba usando “1” para el número de versión. ¡Y acabo de descubrir que usar la versión “1” ahora significa que está usando la versión actual! Desde el documento de Google Charts: “Todas las solicitudes ‘jsapi’ ahora se están redirigiendo al nuevo cargador. Si estaba cargando la versión ‘1’ o ‘1.0’, ahora estará cargando ‘actual'”.
También he probado la versión 45, y falla por si acaso también. Parece que las versiones más recientes tienen problemas de carga con wkhtmlpdf.