Primero, preparamos el controller. Necesitamos la gema IMGKit y generar la el HTML que vamos a convertir en imagen a través de un layout semivacío.
require 'imgkit'
...
kit = IMGKit.new(render_to_string :index, formats: [:html], layout: 'html2img')
respond_to do |format|
format.png { send_data(kit.to_img(:png), :type => "image/png", :disposition => 'attachment', filename: 'table.png') }
end
Esto por sí sólo es posible que funcione en un entorno previamente configurado, especialmente si es un Lynux. En windows, por lo general hacen falta dos cosillas:
- Instalar wkhtmltoimage, que viene con wkhtmltopdf. Lo podéis encontrar aquí.
- Configurar la ruta al ejecutable que hará la conversión, por ejemplo en /config/initializers/imgkit.rb
config.wkhtmltoimage = 'C:\Program Files (x86)\wkhtmltopdf\wkhtmltoimage.exe'
css = StringIO.new("html,body{height:100%; font-family :Arial ,sans-serif; font-size: 13px; line-height: 14px}...")
kit.stylesheets << css
Et voilà! Listo para descargar. ¡Salud y rocanrol!
Bola extra!
Si en la generación de la imagen os aparecen tres caracteres no-cristianos como  , no os asustéis. Estos caracteres son el Byte Order Mark de la codificación en UTF-8 de algún fichero. Revisad los layouts y las vistas implicadas y salvad todos sin ese BOM.
Time out - let's get something clear
I speak - more truth than you want to hear
Scapegoat - to cover up your fear... you can't bring me
You ain't - never seen so much might
Fight for - what I know is right
What up - you got yourself a fight... you can't bring me
Stand up - we'll all sing along
Together - aint nothing as strong
Won't quit - we ain't in the wrong... you can't bring me
You - can't - bring - me - down!
No hay comentarios:
Publicar un comentario