如何将包含动态数据的html刀片从laravel转换为PDF?

时间:2017-11-13 16:17:06

标签: php html laravel

我正在尝试使用laravel中的tcpdf编写将html刀片转换为PDF的代码。

这是我用来转换的控制器代码:

public function htmlToPDF()
{  
    $view=view('PdfDemo');
    $html_content =$view->render();
    PDF::SetTitle('Sample PDF');
    PDF::AddPage();
    PDF::writeHTML($html_content, true, false, true, false, '');
    PDF::Output('SamplePDF.pdf');
}

当我在我的视图上放置静态数据(PdfDemo)时,所有内容都成功运行,但问题是当我在刀片中放入带有一些变量的动态数据时,如下所示:

                        <table>
                          <?php $i=0?>
                            @if(count($names))
                                @foreach($names as $n)
                                    <tr><td>
                                    <label>Name{{$i}}:</label>{{$n}}</td>
                                    <tr><td><hr></td></tr>
                                    <?php $index = $index+1; ?>
                                @endforeach
                            @endif
                        </table>

这里$ names是控制器其他功能中select语句的结果,然后我将它传递给刀片:

 return view('PdfDemo',compact('names'));

在这种情况下,刀片看起来完全符合我的要求,但当我尝试转换为PDF时,它显示错误,$ name未定义。

2 个答案:

答案 0 :(得分:0)

这样做:

$view = View::make('PdfDemo',compact('names'));
$contents = (string) $view;
// or
$contents = $view->render();

当您使用View::make()时,在添加动态变量的值后,它会将刀片文件的HTML代码作为HTML内容。

答案 1 :(得分:0)

您没有将数据传递到htmlToPDF函数中的视图。

尝试将其更改为:

public function htmlToPDF($names)
{  
    $view=view('PdfDemo', compact('names');
    $html_content =$view->render();
    PDF::SetTitle('Sample PDF');
    PDF::AddPage();
    PDF::writeHTML($html_content, true, false, true, false, '');
    PDF::Output('SamplePDF.pdf');
}