2010-12-30 24 views
13

Sto cercando un modo per convertire i tag HTML per un'immagine al volo ...rotaie convertire html immagine

Ciò significa, che voglio essere in grado di fare un image_tag con un percorso di un metodo che restituisce l'immagine creata in formato html.

ero alla ricerca di una soluzione su questo, ma non riuscivo a trovare un modo corretto per risolvere il ...

tutte le idee?

Maechi

+2

Dopo aver letto questo due volte, io sono ancora confuso quello che stai provando a realizzare. – tybro0103

+0

Per favore fate sapere a tutti: 1) Perché e 2) di quali tipi di tag state parlando? – jschorr

+0

L'immagine è un'immagine di qualche codice html che mostra una serie di tag, un'immagine di una pagina come si visualizzerebbe in un particolare browser, o stai provando a prendere una parte particolare della pagina, dici un tag di paragrafo e gira quella in un'immagine che mostra quel paragrafo come un'immagine - un generatore di testo in immagine in modo efficace. O è qualcosa di completamente diverso? – stef

risposta

1

ho intenzione di prendere un ipotesi qui e immaginare che si desidera convertire HTML a un'immagine, in modo da prendere una "istantanea" di una pagina web o qualcosa del genere. Non sono sicuro di come farlo in un solo passaggio, ma un modo per farlo è usare PDFKit per convertirlo in PDF e quindi usare RMagick per convertire in qualsiasi formato di immagine tu voglia.

+3

Il motivo per cui qualcuno vorrebbe fare questo è convertire layout HTML complessi in layout email friendly. –

26

IMGkit può fare il lavoro (details on github)

Creare JPG utilizzando pianura vecchio HTML + CSS

kit = IMGKit.new('http://google.com') 
kit.to_jpg 
kit.to_jpeg 
kit.to_png 
kit.to_tif 
kit.to_tiff 

o nel controller

@kit = IMGKit.new(render_as_string) 

format.jpg do 
    send_data(@kit.to_jpg, :type => "image/jpeg", :disposition => 'inline') 
end 
+0

cosa render_as_string senza parametri? Non capisco ... nessuno potrebbe indicarmi da qualche parte? E dovrebbe essere render_to_string? In ogni caso, che cosa fa? –

+0

Potresti modificare uno di questi "kit" in un file per inviarlo via FTP? –

+0

@JakubKuchar http://api.rubyonrails.org/classes/AbstractController/Rendering.html#method-i-render_to_string Il primo argomento può essere un percorso della vista che si desidera rendere come stringa, ad esempio "ordini/riepilogo" . I documenti lo dicono meglio: _È simile al rendering, tranne per il fatto che non imposta il response_body e dovrebbe essere garantito che restituisca sempre una stringa_. –

1

IMGKIT css reqiured con url assoluto per qualsiasi immagine di sfondo o altre risorse. modo da poter generare seguendo dinamicamente questo link https://coderwall.com/p/exj0ig e alcuni passi come

A) Metti le tutte le immagini in assets/images cartella di rotaie app

B) Installare Gem 'Sass-guide' se si installa https://github.com/rails/sass-rails

C) creare un altro nome di file css come css_file_name.css.sccs.erb

D) metti il ​​tuo altro contenuto di file css in esso.

E) Nel file CSS appena messo la vostra immagine il nome del file, come di seguito: background-image: Immagine-url ('immagine.png');

F) utilizzare i beni pipline (http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline) Run sotto comando come la modalità di applicazione: (1) Modalità di sviluppo: RAILS_ENV asset = sviluppo fascio exec rastrello: precompilare (2) Modalità di produzione: RAILS_ENV = fascio di produzione beni rastrello exec: precompilazione

G) nella configurazione/ambienti/

(1) In development.rb config.action_controller.asset_host = "Local URL cioè YOUR_LOCALHOST_ADDRES S "

(2) In production.rb config.action_controller.asset_host = "http://assets.example.com"/VOSTRO INDIRIZZO/

H) E ultimo relazionarsi foglio di stile con IMGKIT come di seguito

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) Riavviare il server e godere !!!!!

[NOTA:. Dopo ogni modifica Eseguire le attività di comando pipline per le ultime application.css che è fatto da file di estensione .sccs.erb]