laravel-dompdf:如何使 dompdf 呈现调用它的同一页面的 pdf?
laravel-dompdf: How do I make dompdf render a pdf of the same page that it is called from?
我想做的是将一个页面传递给 dompdf 以呈现它,但呈现页面的按钮位于页面本身。
页面(index.blade.php)
<div class="event-links">
<div class="panel panel-default">
<!-- <a href="{{ URL::to('/events/create') }}"> -->
<a href="{{ action('StrawdogController@pdfgen')}}">
<div class="panel-heading">Generate PDF</div>
</a>
</div>
</div>
<div class="nametag-layout">
<table class="table table-striped pagin-table table-bordered">
<thead>
<tr>
<td>Mod Start Time</td>
<td>Mod End Time</td>
<td>Mod Description</td>
</tr>
</thead>
<tbody>
@foreach($mods as $key => $value)
<tr>
<td>{{ $value->mod_description }}</td>
<td>{{ $value->mod_start_time }}</td>
<td>{{ $value->mod_end_time }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
和控制器函数(占位符)
public function pdfgen()
{
$dompdf = new Dompdf();
$dompdf->loadView('strawdogs.index');
$dompdf->render();
$dompdf->stream();
}
}
我的页面上有一个名为 'Generate PDF' 的按钮,我希望用户能够按下它并获取位于同一页面上的 table 的 PDF。目前,我已经尝试过,如果您调用另一个页面,我可以看到它会传递值,但它似乎不会对同一页面执行此操作。
基本上,有没有办法在同一页面上调用 dompdf,如果有,我该怎么做?
在您的控制器上,您必须调用视图方法并使用 compact 发送变量,然后使用 loadHtml() 并将视图方法作为参数传递。
$options = new Options();
$options->set('defaultFont', 'DejaVu Sans');
$dompdf = new Dompdf($options);
// instantiate and use the dompdf class
$html = view('pages.callsheet_view', compact(['request'],['number_of_no']));
$dompdf->loadHtml($html,'UTF-8');
$dompdf->render();
$dompdf->stream();
您可以在没有渲染按钮的情况下创建新视图(pdf.blade.php)。
单击 index.blade.php 上的渲染按钮时,从 pdf.blade.php.
生成 pdf
PDF 页面 (pdf.blade.php)
<div class="nametag-layout">
<table class="table table-striped pagin-table table-bordered">
<thead>
<tr>
<td>Mod Start Time</td>
<td>Mod End Time</td>
<td>Mod Description</td>
</tr>
</thead>
<tbody>
@foreach($mods as $key => $value)
<tr>
<td>{{ $value->mod_description }}</td>
<td>{{ $value->mod_start_time }}</td>
<td>{{ $value->mod_end_time }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
和控制器函数(占位符)
public function pdfgen()
{
$dompdf = new Dompdf();
$dompdf->loadView('strawdogs.pdf');
$dompdf->render();
$dompdf->stream();
}
PDF::loadView('x.blade.php')->output();
我想做的是将一个页面传递给 dompdf 以呈现它,但呈现页面的按钮位于页面本身。
页面(index.blade.php)
<div class="event-links">
<div class="panel panel-default">
<!-- <a href="{{ URL::to('/events/create') }}"> -->
<a href="{{ action('StrawdogController@pdfgen')}}">
<div class="panel-heading">Generate PDF</div>
</a>
</div>
</div>
<div class="nametag-layout">
<table class="table table-striped pagin-table table-bordered">
<thead>
<tr>
<td>Mod Start Time</td>
<td>Mod End Time</td>
<td>Mod Description</td>
</tr>
</thead>
<tbody>
@foreach($mods as $key => $value)
<tr>
<td>{{ $value->mod_description }}</td>
<td>{{ $value->mod_start_time }}</td>
<td>{{ $value->mod_end_time }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
和控制器函数(占位符)
public function pdfgen()
{
$dompdf = new Dompdf();
$dompdf->loadView('strawdogs.index');
$dompdf->render();
$dompdf->stream();
}
}
我的页面上有一个名为 'Generate PDF' 的按钮,我希望用户能够按下它并获取位于同一页面上的 table 的 PDF。目前,我已经尝试过,如果您调用另一个页面,我可以看到它会传递值,但它似乎不会对同一页面执行此操作。
基本上,有没有办法在同一页面上调用 dompdf,如果有,我该怎么做?
在您的控制器上,您必须调用视图方法并使用 compact 发送变量,然后使用 loadHtml() 并将视图方法作为参数传递。
$options = new Options();
$options->set('defaultFont', 'DejaVu Sans');
$dompdf = new Dompdf($options);
// instantiate and use the dompdf class
$html = view('pages.callsheet_view', compact(['request'],['number_of_no']));
$dompdf->loadHtml($html,'UTF-8');
$dompdf->render();
$dompdf->stream();
您可以在没有渲染按钮的情况下创建新视图(pdf.blade.php)。 单击 index.blade.php 上的渲染按钮时,从 pdf.blade.php.
生成 pdfPDF 页面 (pdf.blade.php)
<div class="nametag-layout">
<table class="table table-striped pagin-table table-bordered">
<thead>
<tr>
<td>Mod Start Time</td>
<td>Mod End Time</td>
<td>Mod Description</td>
</tr>
</thead>
<tbody>
@foreach($mods as $key => $value)
<tr>
<td>{{ $value->mod_description }}</td>
<td>{{ $value->mod_start_time }}</td>
<td>{{ $value->mod_end_time }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
和控制器函数(占位符)
public function pdfgen()
{
$dompdf = new Dompdf();
$dompdf->loadView('strawdogs.pdf');
$dompdf->render();
$dompdf->stream();
}
PDF::loadView('x.blade.php')->output();