【发布时间】:2020-10-27 00:18:53
【问题描述】:
我正在尝试使用 snappy 库和 wkhtmltopdf 在生成的 PDF 上呈现图表 (LavaChart),但我无法做到。 PDF 生成良好,但图表未显示。如果视图未转换为 PDF,则按预期呈现图表。
下面是我的 LavaChart 和 Snappy 代码。
图表部分
$chart = Lava::ColumnChart('Performance', $table, [
'title' => 'Performance Chart',
'png' => true,
'animation' => [
'startup' => true,
'easing' => 'inAndOut'
],
'titleTextStyle' => [
'fontName' => 'Arial',
'fontColor' => 'blue'
],
'legend' => [
'position' => 'top'
],
'vAxis' => [
'title' => 'Total Score'
],
'hAxis' => [
'title' => 'Class'
],
'events' => [
'ready' => 'getImageCallback'
],
'colors' => ['#3366CC','#DC2912', '#FF9900']
]);
活泼的部分
$pdf = PDF::loadView('print.charts')->setPaper('portrait');
$pdf->setOption('enable-javascript', true);
$pdf->setOption('javascript-delay', 10000);
$pdf->setOption('no-stop-slow-scripts', true);
$pdf->setOption('page-size', 'A4');
$pdf->setOption('margin-left', 0);
$pdf->setOption('margin-right', 0);
$pdf->setOption('margin-top', 0);
$pdf->setOption('margin-bottom', 0);
$pdf->setOption('lowquality', false);
$pdf->setTimeout(1500);
$pdf->setOption('disable-smart-shrinking', true);
视图部分
<script type="text/javascript">
function getImageCallback (event, chart) {
console.log(chart.getImageURI());
}
</script>
<div id="chart" style="margin: 10px; height: 200px; width: 50%;"></div>
{!! Lava::render('ColumnChart', 'Performance', 'chart') !!}
由于当视图未转换为 pdf 时图表按预期呈现,我有理由相信 wkhtmltopdf 不会执行 pdf 版本中预期的 javascript。我安装了最新的wkhtmltopdf,但仍然没有运气。
库版本:
barryvdh/laravel-snappy: ^0.4.3
khill/lavacharts: 3.0.*
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
这可能是因为lavachart中的js没有加载,有一种解决方案,将您获得的图表转换为svg然后将该svg放入pdf中
-
你能帮忙提供一个代码示例吗?