DOMPDF Laravel 5交互式页面

时间:2015-07-02 16:53:27

标签: laravel-5 dompdf

我正在使用Laravel 5为仓库生成表单。在主表单中,您可以选择要获取的项目,并且应该生成包含项目(所有信息)的PDF,获取项目的人员,日期和发票编号。

所有信息都在名为“发票”的DIV上。如何将此对象发送到新视图以生成PDF。我读到了“通过web调用dompdf”以使其更具交互性,但文档不够清晰或不符合我的需要。 这是我目前的代码: 发件人: enter image description here 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>

1 个答案:

答案 0 :(得分:1)

您可以将选择参数发送到服务器并重新构建页面,而不是尝试捕获HTML吗?然后你只需要将生成的HTML提供给dompdf并渲染。如果视觉外观很重要,您可以使用隐藏的复选框作为选择机制。

如果您想使用快捷方式,可以使用jQuery.contents() 捕获HTML。

在您的第二部分中,您似乎正在尝试通过AJAX发送请求并获取PDF。虽然这是technically possible,但它比它的价值更麻烦。更简单的替代方法是将隐藏的表单提交到空白窗口。它需要对您的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>