我正在寻找将html标签即时转换为图像的方法...
也就是说,我想能够创建一个带有指向从html创建的图像的方法路径的image_tag。
我一直在寻找解决方案,但是没有找到合适的方法来解决这个问题...
有任何想法吗?
Maechi
我正在寻找将html标签即时转换为图像的方法...
也就是说,我想能够创建一个带有指向从html创建的图像的方法路径的image_tag。
我一直在寻找解决方案,但是没有找到合适的方法来解决这个问题...
有任何想法吗?
Maechi
IMGkit能够胜任这项任务 (查看Github详情)
使用纯旧HTML+CSS创建JPGs
kit = IMGKit.new('http://google.com')
kit.to_jpg
kit.to_jpeg
kit.to_png
kit.to_tif
kit.to_tiff
或者在你的控制器中
@kit = IMGKit.new(render_as_string)
format.jpg do
send_data(@kit.to_jpg, :type => "image/jpeg", :disposition => 'inline')
end
IMGKit
是不够的,因为底层的wkhtmltoimage
应用程序已经删除了对tiff的支持。相关提交:https://github.com/csquared/IMGKit/commit/378a8ae11d94afd012b0fee7839da9910a19ffb2 - RajaRaviVarmarender_to_string
(至少在Rails 7中)。 - DorianIMGKIT需要使用绝对URL的CSS来引用背景图像或其他资产。因此,您可以根据以下链接https://coderwall.com/p/exj0ig动态生成它,并按照以下步骤进行操作:
A)将所有图像放入Rails应用程序的assets/images文件夹中
B)如果未安装,请安装gem 'sass-rails' https://github.com/rails/sass-rails
C)创建另一个名为css_file_name.css.sccs.erb的CSS文件
D)将您所有其他CSS文件的内容放入其中。
E)在CSS文件中只需将图像文件名放入如下位置: background-image: image-url('image.png');
F) 使用资产通道 (http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline) 根据您的应用程序模式运行以下命令: (1) 开发模式:RAILS_ENV=development bundle exec rake assets:precompile (2) 生产模式:RAILS_ENV=production bundle exec rake assets:precompile
G) 在 config/environments/ 中:
(1) 在 development.rb 文件中: config.action_controller.asset_host = "YOUR LOCAL HOST URL i.e YOUR_LOCALHOST_ADDRESS"
(2) 在 production.rb 文件中: config.action_controller.asset_host = "http://assets.example.com"/YOUR ADDRESS/
H) 最后,请将样式表与 IMGKIT 关联,如下所示:
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) 重新启动服务器并享受!!!!!
[注意: 在每次更改后,请运行资产管道命令以获取最新的应用程序.css,该文件是从.sccs.erb扩展文件制作的。]
render_html_action
来呈现 HTML 页面snapshot_action
,使用 puppeteer-ruby 将 render_html_action
呈现的 HTML 快照为 JPG 或 PDF