ruby-on-rails - 如何将视图转换为图像
问题描述
我正在尝试创建一个功能,该功能可以使用用户提供的数据创建 PDF 和图像。
对于 PDF,我**.html.erb
使用 Wicked PDF gem 成功地将模板转换为 PDF。但是,经过几个小时的搜索,我找不到类似的 gem 或从我的 ERB 文件中创建图像的方法。
这就是我使用 Wicked PDF 将模板转换为 PDF 的方式。
def linesheet_pdf
# variables used to create the pdf
@items = params[:items]
@contact = params[:contact]
# send pdf file back to front end
response_to do |format|
format.pdf do
render pdf: "filename.pdf",
template: "path/to/html/erb/file/XYZ.html.erb",
type: 'application/pdf', page_size: 'Letter'
end
end
end
通过这样做,我可以将我的 HTML 文件与我的自定义 CSS 文件中的样式一起使用。
我最初考虑将 PDF 转换为图像作为一种解决方法,但我发现从具有多页的 PDF 转换的图像文件不会是具有长滚动的单个图像。
解决方案
我认为您正在寻找的是IMGKIT。
设置完成后,您可以使用以下内容:
def show
respond_to do |format|
format .html
format.png do
kit = IMGKit.new render_to_string, width: 1080, height: 1080
send_data kit.to_png, type: "image/png", disposition: "inline"
end
end
end
然后像这样链接:
<%= link_to your_path(@yourmodel, format: "png", s: 'linkeding') do %>
<% end %>
推荐阅读
- python - 加载 csv 文件 python jupyter
- python - 仅在 pandas 列中的文件名中找到变量数字数据并将数字放在新列中
- blazor - 如何在生产中部署 Blazor 服务器并克服 SignalR 重新连接问题?
- javascript - 无法在 React 中更改字符串的状态
- javascript - 如何使用单击事件从数组中删除对象
- javascript - 使用节点将大数组写入文件
- mysql - MySQL:添加和删除列后查询变慢
- autodesk-forge - 部署到 AWS 的 Autodesk Design Automation
- mysql - 使用 mysqldump 时跳过或忽略临时表
- python - 我如何在 Z3Py 中验证公理?