我正在尝试使用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未定义。
答案 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');
}