我正在使用PHP Laravel框架开发一个网站。我的网站需要实现一个生成PDF报告的功能。在该PDF报告中,我在HTML画布上绘制了一张图片。我正在使用此库https://github.com/barryvdh/laravel-dompdf生成PDF报告。我可以生成报告,问题是画布不包含在报告中。请参阅下面的代码。
这是我的控制器生成pdf报告并在浏览器中显示。
class ReportController extends Controller
{
//
function invoice(){
$pdf = PDF::loadView('report.invoice');
return $pdf->stream();
}
}
这是我的pdf报告视图文件。
<h1>Report</h1>
<table border="1" style="width: 100%;">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Title 1</td>
<td>1000</td>
</tr>
<tr>
<td>2</td>
<td>Title 2</td>
<td>200</td>
</tr>
</tbody>
</table>
<canvas id="myCanvas" width="400" height="200">
</canvas>
<script type="text/javascript">
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var center_x = 200;
var center_y = 100;
var width = 100;
var height = 200;
drawOvalShape(context, 200, 100, 100, 200);
drawOvalShape(context, 200, 100, 80, 180);
drawOvalShape(context, 200, 100, 60, 160);
drawOvalShape(context, 200, 100, 40, 140);
drawOvalShape(context, 200, 100, 20, 120);
function drawOvalShape(context, center_x, center_y, width, height){
context.beginPath();
context.ellipse(center_x, center_y, width, height, 90 * Math.PI/180, 0, 2 * Math.PI);
context.stroke();
}
</script>
但是当它在浏览器中显示时,HTML画布将从报告中删除。但其他html元素正如预期的那样工作。为什么删除它?如何在我的PDF报告中包含画布?我的代码出了什么问题?
我也在dompdf.php这样的配置文件中将html5parser设置为true
"DOMPDF_ENABLE_HTML5PARSER" => true,
这不仅仅是工作。