在Laravel中从HTML中删除HTML画布

时间:2018-01-14 19:58:31

标签: php pdf canvas laravel-5

我正在使用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,

这不仅仅是工作。

1 个答案:

答案 0 :(得分:0)

似乎dompdf并不真正支持像<canvas>这样的HTML5元素,但无论如何都有option来支持其实验性支持

$dompdf->set_option('isHtml5ParserEnabled', true);

也许你可以尝试一下,检查一下是否适合你。