2012-09-12 20 views
14

¿Alguien en este vasto espacio ha tenido la suerte de crear un PDF con un SVG incrustado en un HTML? He estado recibiendo fallas de segmentación todo el tiempo.wkhtmltopdf error al incrustar un SVG

¿O quizás hay alguna otra manera de incrustar un SVG en un archivo HTML y exportarlo a PDF en lugar de wkhtmltopdf?

+0

Esto suena como un problema que he resuelto recientemente con wkhtmltopdf usando SVG. ¿Qué versión has probado? Tuve más suerte usando la versión estáticamente enlazada 0.9 para hacer esto. – hsanders

+0

hsanders, estoy usando 0.11.0 rc1 ... ¿cómo incrustó el archivo por cierto? – Jeebsion

+0

El SVG que estábamos usando estaba incrustado en los gráficos altos (generados sobre la marcha) – hsanders

Respuesta

0

Derecha ... Me las arreglé para llevarlo a cabo finalmente ... todo lo que necesitaba era un poco de tratamiento en el archivo eps original. Abrí el archivo con Illustrator y opté por "aplanar la transparencia" ... tal vez lo que hace es aplanar las muchas capas del archivo o algo así ... luego guardar como svg .. y se procesa muy bien en el PDF ..

Espero que esto ayude si alguien por ahí tendría el mismo problema que yo. ¡Gracias! : D

12

Tuve un problema similar. Parece que JavaScript incrustado en una imagen SVG puede causar un error de segmentación.

Estaba generando gráficos SVG usando pygal módulo Python. Para generar PDF de HTML con gráficos SVG con éxito tuve que hacer varias cosas:

  1. Eliminar la referencia a javascript. (En caso de pygal agregue la clave js =() a un constructor de gráfico).
  2. especificar el tamaño de la imagen en la etiqueta SVG, como

    <svg ... width="300" height="200"> 
    

    (En caso de uso pygal explicit_size keywoard) Imagen

  3. Embed SVG en img etiqueta en base64 forma codificados, como

    <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0..."> 
    

Estaba usando la undécima versión de wkhtmltopdf.

+2

También intente eliminar la propiedad 'opacity' de cualquier etiqueta en el archivo xml; eso lo resolvió para mí. – okyanet

+0

Al expandir el archivo SVG en la etiqueta SVG lo hice por mí.Poniéndolo dentro de la etiqueta 'img' no hizo nada, desafortunadamente. –

4

Si esta revisión no funciona para otros, esto es lo que funcionó para mí con chartist.js y wkhtmltopdf 0.12.2.1 bajo Ubuntu 64. (Crédito a Panokev)

Agregar a su javascript antes de todos los demás JS.

{ 

Function.prototype.bind = Function.prototype.bind || function (thisp) { 
    var fn = this; 
    return function() { 
     return fn.apply(thisp, arguments); 
    }; 
}; 

fijado con carácter definitivo estilo anchura para div carta, por ejemplo - style = "width: 950 píxeles;"

+1

¿Es esto específico para chartist.js, y qué hace? ¿Puedes agregar más detalles? – mehmet

Cuestiones relacionadas