我正在尝试使用 wemersonjanuario / laravelpdf 在laravel中生成pdf。 以下是我的控制器功能。
public function generate_pdf($table,$all_data)
{
$pdf_name = $version.'_'.$table.'.pdf';
File::delete('directory/'.$pdf_name);
$view = \View::make('pdf',['all_data'=>$all_data]);
PDF::loadHTML($view)->orientation('Landscape')
->save($pdf_name , new Local(base_path().'/public/'));
return '/public/'.$pdf_name ;
}
下面,
$ all_data =我从表中提取的数据
$ view =查看我从数据中提取的内容
$ table =表名
生成pdf后,我将保存的路径返回到javascript,使用window.open打开路径。
这是刀片区域
@php($page = 1)
@foreach ($all_data['p_datas'] as $key => $cols)
<section class="col-lg-12" style="width: {{$line_size}}px;page-break-before: always" >
<table class='mytable' style="border-collapse: collapse;border-spacing: 0px;margin-left: auto; margin-right: auto;">
<thead style="border-top:1px solid #000000;border-bottom: 1px solid #000000; text-align: center">
<tr class='top-border bottom-border top'>
@foreach ($all_data['columns'][$p_no] as $col)
<td class="text-center formate" style="width:{{$all_data['column_width'][$col]}}px; padding-right: {{ $all_data['td_space' ]}}px">{!! $col !!}</td>
@endforeach
</tr>
</thead>
<tbody style="text-align: center;">
@foreach($cols as $i=>$data)
<tr>
@foreach($data as $j=>$dt)
<td style="min-height: 40px;padding-bottom: 8px"> {!! $dt !!} </td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="footnote col-sm-12" style="border-top: solid 1px;">
<span class="footnote" id="footnote">{!!$footnote!!}</span>
</div>
<div style="margin-top: 20px; margin-bottom: 10px;">
<table class="row" style="margin-left: 30px">
<tbody>
<td style="width: 400px"><h6>Printed By: {{ $user }}</h6></td>
<td style="width: 300px"><h6> Page <span> {{ $page }}</span></h6></td>
<td style="width: 400px"><h6>Print Date : {{ $date }}</h6></td>
</tbody>
</table>
</div>
</section>
@php($page++)
@endforeach
在表格中我有1000行。在刀片文件中,我每隔25行打一次循环并渲染数据。
如果我只使用下面的代码在html中渲染视图,则需要最多10秒。但是当我尝试生成pdf时,它需要一天或更长时间。这里有什么问题?
$ html = $ view-&gt; render();
返回$ html
我也使用了dompdf和tcpdf,但那些与wkhtmltopdf相同。有没有解决方案?