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>