DOMPDF Laravel 5 互动页面
DOMPDF Laravel 5 Interactive Page
我正在使用 Laravel 5 为仓库生成表单。在主表单中,您可以 select 获取哪些项目,它应该生成包含项目(所有信息)、获取项目的人员、日期和发票编号的 PDF。
所有信息都在一个名为 'invoice' 的 DIV 上。如何将此对象发送到新视图以生成 PDF。我阅读了 'invoking dompdf via web' 以使其更具交互性,但文档不够清晰或不符合我的需要。
这是我当前的代码:
发件人:
Recibo.js
$('#createPDF').click(function()
{
$htmlData = "data";
$_token = $('[name="_token"]').val();
$.get('recibos/pdf',{ html:$htmlData, _token: $_token })
.done(function(data)
{
console.log('Done PDF!');
});
});
ReciboController.php
public function reciboPDF(Request $request)
{
$data = $request->get('html');
$pdf = \PDF::loadView('create.template.formReciboPDF',compact('data'))->setPaper('letter')->setOrientation('landscape');
return $pdf->stream();
//return view('create.template.formReciboPDF');
}
formReciboPDF.blade.php
<tr>
<td>{{$data}}</td>
<td>Papeleria</td>
<td>Unidad</td>
<td>Grande</td>
<td>La Palma</td>
<td>2342423424234</td>
<td>Bueno</td>
<td>9</td>
</tr>
您可以将选择参数发送到服务器并重新构建页面,而不是尝试捕获 HTML 吗?然后你只需要将生成的 HTML 提供给 dompdf 并渲染。如果视觉外观很重要,您可以使用隐藏的复选框作为选择机制。
如果您想使用快捷方式,您可以可以使用jQuery.contents()
捕获HTML。
在您的第二部分中,您似乎正试图通过 AJAX 发送您的请求并取回 PDF。虽然这是 technically possible 但麻烦多于它的价值。更简单的替代方法是将隐藏表单提交到空白 window。这将需要对您的 HTML/JS 进行一些小改动,但仅此而已,例如
$('#createPDF').click(
function() {
$('#html').val($('#invoice').content());
$(this).closest('form').submit();
});
<form method="POST" action="recibos/pdf" target="_blank">
<input type="hidden" name="html" id="html" value="" />
<input type="hidden" name="_token" value="{value from server}" />
<button type="button" id="createPDF">Create PDF</button>
</form>
我正在使用 Laravel 5 为仓库生成表单。在主表单中,您可以 select 获取哪些项目,它应该生成包含项目(所有信息)、获取项目的人员、日期和发票编号的 PDF。
所有信息都在一个名为 'invoice' 的 DIV 上。如何将此对象发送到新视图以生成 PDF。我阅读了 'invoking dompdf via web' 以使其更具交互性,但文档不够清晰或不符合我的需要。
这是我当前的代码:
发件人:
$('#createPDF').click(function()
{
$htmlData = "data";
$_token = $('[name="_token"]').val();
$.get('recibos/pdf',{ html:$htmlData, _token: $_token })
.done(function(data)
{
console.log('Done PDF!');
});
});
ReciboController.php
public function reciboPDF(Request $request)
{
$data = $request->get('html');
$pdf = \PDF::loadView('create.template.formReciboPDF',compact('data'))->setPaper('letter')->setOrientation('landscape');
return $pdf->stream();
//return view('create.template.formReciboPDF');
}
formReciboPDF.blade.php
<tr>
<td>{{$data}}</td>
<td>Papeleria</td>
<td>Unidad</td>
<td>Grande</td>
<td>La Palma</td>
<td>2342423424234</td>
<td>Bueno</td>
<td>9</td>
</tr>
您可以将选择参数发送到服务器并重新构建页面,而不是尝试捕获 HTML 吗?然后你只需要将生成的 HTML 提供给 dompdf 并渲染。如果视觉外观很重要,您可以使用隐藏的复选框作为选择机制。
如果您想使用快捷方式,您可以可以使用jQuery.contents()
捕获HTML。
在您的第二部分中,您似乎正试图通过 AJAX 发送您的请求并取回 PDF。虽然这是 technically possible 但麻烦多于它的价值。更简单的替代方法是将隐藏表单提交到空白 window。这将需要对您的 HTML/JS 进行一些小改动,但仅此而已,例如
$('#createPDF').click(
function() {
$('#html').val($('#invoice').content());
$(this).closest('form').submit();
});
<form method="POST" action="recibos/pdf" target="_blank">
<input type="hidden" name="html" id="html" value="" />
<input type="hidden" name="_token" value="{value from server}" />
<button type="button" id="createPDF">Create PDF</button>
</form>