Ruby on rails 无法在rails 2.3应用程序中使用Wickedpdf和Highcharts以pdf格式呈现图表
我必须以pdf格式呈现柱(条形)图,我使用的是wickedpdf插件和highcharts javascript。下面的代码在html视图中工作得很好,但在pdf中它不起作用,我也尝试过禁用动画和鼠标跟踪,但没有帮助 这是我的密码Ruby on rails 无法在rails 2.3应用程序中使用Wickedpdf和Highcharts以pdf格式呈现图表,ruby-on-rails,highcharts,wicked-pdf,Ruby On Rails,Highcharts,Wicked Pdf,我必须以pdf格式呈现柱(条形)图,我使用的是wickedpdf插件和highcharts javascript。下面的代码在html视图中工作得很好,但在pdf中它不起作用,我也尝试过禁用动画和鼠标跟踪,但没有帮助 这是我的密码 <%= wicked_pdf_javascript_include_tag 'jquery-1.6.2.min', 'dr_statistics/highcharts' %> <script> $(function () { $
<%= wicked_pdf_javascript_include_tag 'jquery-1.6.2.min', 'dr_statistics/highcharts' %>
<script>
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Monthly Average Rainfall'
},
subtitle: {
text: 'Source: WorldClimate.com'
},
xAxis: {
categories: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
]
},
yAxis: {
min: 0,
title: {
text: 'Rainfall (mm)'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0,
enableMouseTracking: false,
shadow: false,
animation: false }
},
series: [{
name: 'Tokyo',
data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}, {
name: 'New York',
data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]
}, {
name: 'London',
data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]
}, {
name: 'Berlin',
data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]
}]
});
});
</script>
<div id="container"></div>
$(函数(){
$(“#容器”)。高图({
图表:{
类型:“列”
},
标题:{
文字:“月平均降雨量”
},
副标题:{
文本:'来源:WorldClimate.com'
},
xAxis:{
类别:[
“一月”,
二月,,
“三月”,
“四月”,
“五月”,
"六月",,
七月,,
"八月",,
"九月",,
“十月”,
十一月,,
“十二月”
]
},
亚克斯:{
分:0,,
标题:{
文字:“降雨量(毫米)”
}
},
工具提示:{
headerFormat:“{point.key}”,
pointFormat:“{series.name}:”+
“{point.y:.1f}mm”,
页脚格式:“”,
分享:是的,
useHTML:true
},
打印选项:{
专栏:{
点填充:0.2,
边框宽度:0,
enableMouseTracking:false,
影子:错,
动画:false}
},
系列:[{
名称:"东京",,
数据:[49.9,71.5,106.4129.2,144.0176.0,135.6148.51216.4194.1,95.6,54.4]
}, {
名称:'纽约',
数据:[83.6,78.8,98.5,93.4,106.0,84.5,105.0,104.3,91.2,83.5,106.6,92.3]
}, {
名称:“伦敦”,
数据:[48.9,38.8,39.3,41.4,47.0,48.3,59.0,59.6,52.4,65.2,59.3,51.2]
}, {
名称:“柏林”,
数据:[42.4,33.2,34.5,39.7,52.6,75.5,57.4,60.4,47.6,39.1,46.8,51.1]
}]
});
});
请在这方面提供帮助,提前感谢:)您将无法在pdf中创建动态图表。您需要将其作为矢量图像或类似图像(jpg/png等)导入 幸运的是,highcharts可以使用phantomjs在服务器端导出图像
将highcharts图表另存为图像,并将其作为图像调用,您就可以开始了。我正在进行一个项目,该项目使用AmCharts javascript库动态生成图表,然后需要在PDF报告中显示这些图表。为了成功做到这一点,我们在使用
render\u To\u string()
生成的html页面上使用WickedPdf的pdf\u from\u string()
,并使用javascript延迟,以确保图表已呈现
下面是我们在reports\u控制器中使用show()方法的示例
format.pdf do
pdf = WickedPdf.new.pdf_from_string(
render_to_string('reports/show.html.erb',
:layout => 'layouts/pdf.html',
:javascript_delay => 5000),
)
send_data pdf, filename: "#{@report.name}.pdf",
type: 'application/pdf',
disposition: 'inline'
我知道这个问题很久以前就提出了,但我希望这会有所帮助。这不能满足我的要求,我不仅需要一个图表,还需要所有需要动态计算并以pdf格式显示的图表,这些图表以html格式完美呈现,但不会以pdf格式出现。