rails ruby-on-rails-3 imgkit

ruby on rails 3 - rails - (Rieles) IMGKIT-Problemas en la exportación de imágenes con html y css



rails partials (1)

IMGKIT requiere css con url absoluta para cualquier imagen de fondo u otros activos. Entonces puede generarlo dinámicamente siguiendo este enlace https://coderwall.com/p/exj0ig y algunos pasos como

A) Coloque todas las imágenes en la carpeta assets / images de la aplicación rails

B) Instale gem ''sass-rails'' si no instala https://github.com/rails/sass-rails

C) crear otro nombre de archivo css como css_file_name.css.sccs.erb

D) ponga el resto del contenido de su archivo css.

E) En el archivo css simplemente ponga su nombre de archivo de imagen de la siguiente manera: background-image: image-url (''image.png'');

F) Usa assets pipline ( http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline ) Ejecuta debajo del comando como tu modo de aplicación: (1) Modo de desarrollo: RAILS_ENV = paquete de desarrollo recursos de ejecución del ejecutor: precompilación (2) Modo de producción: RAILS_ENV = activos del ejecutor del paquete de producción: precompilación

G) En su configuración / entornos /

(1) En development.rb config.action_controller.asset_host = "SU URL HOST LOCAL, es decir YOUR_LOCALHOST_ADDRESS"

(2) En production.rb config.action_controller.asset_host = " http://assets.example.com " / SU DIRECCIÓN /

H) Y, por último, relacione su hoja de estilo con IMGKIT como se muestra a continuación

html_content = "YOUR HTML CONTENT" kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/ kit.stylesheets << "#{Rails.root}/public/assets/application.css" file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/ send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => ''attachment'',:streaming=> ''true'') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/

I) ¡ Reinicie el servidor y disfrute!

[ NOTA: después de cada cambio ejecute el comando pipline de assets para obtener la última application.css que está hecha desde el archivo de extensión .sccs.erb.]

Estoy usando IMGKIT en uno de mis proyectos y tuve que usar su CSS con la opción html para satisfacer un requerimiento. Me di cuenta de que si las hojas de estilo se configuran de la siguiente manera:

kit = IMGKit.new(html, :quality => 50) kit.stylesheets << ''/path/to/css/file''

y la hoja de estilo tiene una propiedad de fondo con una url relativa (''image.png''), la imagen no se genera al exportarla usando kit.to_file:

(Rails.root + "public/pngs/" + "image.png")

La solicitud se bloquea, y si reemplazamos la url de fondo a url completo con protocolo, host y puerto, se exporta bien.

¿Necesito tener direcciones URL absolutas para todas mis imágenes en mi hoja de estilo?

Intenté definir asset_host en mi archivo development.rb:

config.action_controller.asset_host = Proc.new { |source| "#{request.protocol}#{request.host_with_port}" }

Reemplaza la url en el css si reviso el navegador pero las imágenes no se generan cuando se exportan a través de IMGKIT.