当在rails中使用wicked pdf创建pdf文件时,没有渲染图表。我已经尝试了多个版本的chart.js。没有任何效果。将pdf显示为html可以完美地工作。另外,我还尝试在chart.js中设置响应式:false,但效果不佳。
我在head标签中使用了以下内容。
<%= wicked_pdf_javascript_include_tag "plugin_assets/rtcharts/javascripts/chart.min.js" %>
<%= wicked_pdf_javascript_include_tag "plugin_assets/rtcharts/javascripts/chart.helper.js" %>
<%= wicked_pdf_stylesheet_link_tag "plugin_assets/rtcharts/stylesheets/rtdashboard.css" %>
下面是图表组件
<% charts = controlchart %>
<div class="rtdashboard grid-container grid-cols-2">
<% if charts.empty? %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% else %>
<% charts.each do |graph| %>
<div>
<%= render partial: 'rtcharts/bar',
formats: [:html],
:javascript_delay => 10000,
locals: graph %>
</div>
<% end %>
<% end %>
</div>
而这是在我的控制器中:
format.pdf {
render template: 'qmcontrols/show',:type => 'application/pdf', pdf: "#{@project.identifier}_qmcontrol_#{@qmcontrol.id}",
margin: {left: 15, right: 15 },
:footer => {:center => "#{@project.name} / #{@location_details[0]['location_company']} / #{@qmcontrol.checkitem_location}", :right => '[page] / [topage]' },:javascript_delay => 5000,show_as_html: true
}
最后,我先把图表转换为图片,然后嵌入到我的PDF中。这一切都要感谢@ty
你可以看到下面的网址,使用quickchart.io将chart.js转换为图片。参考文献 将Chart.js数据转换为图片