【问题标题】:laravel-dompdf: How do I make dompdf render a pdf of the same page that it is called from?laravel-dompdf:如何让 dompdf 呈现与调用它的页面相同的 pdf?
【发布时间】:2017-05-19 06:02:53
【问题描述】:

我正在尝试将页面传递给 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>

和Controller函数(占位符)

public function pdfgen()
{
    $dompdf = new Dompdf();
    $dompdf->loadView('strawdogs.index');
    $dompdf->render();
    $dompdf->stream();
}

}

我的页面上有一个名为“生成 PDF”的按钮,我希望用户能够按下它并获得位于同一页面上的表格的 PDF。目前,我已经尝试过,如果您调用另一个页面,我可以看到它会传递值,但对于同一页面似乎并没有这样做。

基本上,有没有办法在同一页面上调用dompdf,如果有,我该怎么做?

【问题讨论】:

    标签: php laravel dompdf


    【解决方案1】:

    在您的控制器上,您必须调用视图方法并使用 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();
    

    【讨论】:

      【解决方案2】:

      您可以在没有渲染按钮的情况下创建新视图(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>
      

      和Controller函数(占位符)

      public function pdfgen()
      {
          $dompdf = new Dompdf();
          $dompdf->loadView('strawdogs.pdf');
          $dompdf->render();
          $dompdf->stream();
      }
      

      【讨论】:

        【解决方案3】:
        PDF::loadView('x.blade.php')->output();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-25
          • 2021-10-30
          • 2020-07-17
          • 2014-05-09
          • 2021-10-31
          • 2019-12-03
          • 2018-08-30
          相关资源
          最近更新 更多