2010-12-30 11 views
13

Szukam sposób przekonwertować tagi html do obrazu w locie ...szyny konwersji HTML do obrazu

Oznacza to, że chcę być w stanie dokonać image_tag ze ścieżki do metoda, która zwraca obraz utworzony z formularza html.

Szukałem rozwiązania na to, ale nie mógł wymyślić odpowiedni sposób rozwiązać ten ...

jakieś pomysły?

Maechi

+2

Po przeczytaniu tego dwa razy, nadal jestem zdezorientowany co Cię próbuję to osiągnąć. – tybro0103

+0

Daj znać wszystkim: 1) Dlaczego i 2) o jakich typach tagów mówisz? – jschorr

+0

Czy obraz jest obrazem __ fragmentu kodu HTML przedstawiającego zbiór tagów, obrazu strony wyświetlanego w określonej przeglądarce lub próbujesz pobrać określoną część strony, na przykład znacznik akapitu i obrócić to do obrazu, który wyświetla ten akapit jako obraz - skutecznie generuje tekst do obrazu. Czy może to coś zupełnie innego? – stef

Odpowiedz

1

Idę wziąć dzikie przypuszczenie tu domyślać, że chcesz przekonwertować HTML do obrazu, więc podjąć „migawkę” strony internetowej czy coś. Nie jestem pewien, jak to zrobić w jednym kroku, ale jednym ze sposobów na to jest użycie PDFKit, aby przekonwertować do formatu PDF, a następnie użyć RMagick, aby przekonwertować na dowolny format obrazu, który chcesz.

+3

Powodem, dla którego ktoś chciałby to zrobić, jest przekształcenie złożonych układów HTML w przyjazne dla e-maili układy. –

26

IMGkit może wykonać pracę (details on github)

Tworzenie JPG przy użyciu zwykłego starego HTML + CSS

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

lub w kontrolerze

@kit = IMGKit.new(render_as_string) 

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

co render_as_string bez żadnych parametrów? Nie rozumiem. Czy ktokolwiek mógłby mnie gdzieś wskazać? I powinno być render_to_string? W każdym przypadku, co robi? –

+0

Czy możesz edytować jeden z tych "zestawów" w pliku, aby wysłać go przez FTP? –

+0

@JakubKuchar http://api.rubyonrails.org/classes/AbstractController/Rendering.html#method-i-render_to_string Pierwszy argument może być ścieżką do widoku, który chcesz wyrenderować jako ciąg, na przykład "zamówienia/podsumowanie" . Dokumenty mówią najlepiej: _ Jest podobny do renderowania, z tym wyjątkiem, że nie ustawia wartości response_body i powinno być zagwarantowane, aby zawsze zwracać string_. –

1

IMGKIT reqiured css z absolutny URL dla dowolnego obrazu tła lub innych zasobów. Więc można generować dynamicznie po tym linkiem https://coderwall.com/p/exj0ig i niektóre kroki,

A) Połóż wszystkie obrazy w aktywa/images folderu szyn aplikacji

B) zainstalować gem „Sass-szynach” jeśli nie zainstalować https://github.com/rails/sass-rails

C) utworzyć inną nazwę pliku css jak css_file_name.css.sccs.erb

D) umieścić w nim całą zawartość innych plików CSS.

E) W pliku css wystarczy umieścić nazwę pliku obrazu, jak poniżej: background-image: image-url ('image.png');

F) użytkowania aktywów PipLine (http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline) Run poniżej polecenia jako tryb aplikacji: (1) Tryb Rozwoju: RAILS_ENV aktywa = rozwój bundle exec Zgrabiarka: prekompilacji (2) Tryb Produkcja: RAILS_ENV = wiązki produkcja exec aktywa Zgrabiarka: prekompilacji

G) W config/środowiskach/

(1) W development.rb config.action_controller.asset_host = „Twój host lokalny URL tj YOUR_LOCALHOST_ADDRES S "

(2) W production.rb config.action_controller.asset_host = "http://assets.example.com"/swój adres/

H) I ostatnie dotyczą arkusza stylów z IMGKIT jak poniżej

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) Zrestartuj serwer i cieszyć !!!!!

[. UWAGA: Po co zmiany należy uruchomić komendę PipLine Aktywa uzyskać najnowszy application.css który jest wykonany z .sccs.erb rozszerzenie pliku]

Powiązane problemy