【问题标题】:Laravel 5.1 Snappy PDF overwriteLaravel 5.1 Snappy PDF 覆盖
【发布时间】:2015-10-03 17:06:47
【问题描述】:

是否有覆盖现有 PDF 文件的选项?

我有这个功能:

public function quote($id){

    $quote          = Quotes::find($id);
    $last_quote     = sprintf("%'.04d\n", $quote->quote_number);
    $customer       = Customer::find($quote->customer_id);
    $items          = $quote->Items()->get();
    $fullinfo       = json_decode($quote->fullinfo);
    $token          = $quote->Tokens()->first();

    $data = [
        'quote'         => $quote,
        'last_quote'    => $last_quote,
        'customer'      => $customer,
        'items'         => $items,
        'fullinfo'      => $fullinfo,
        'token'         => $token,
    ];

    $pdf = App::make('snappy.pdf.wrapper');

    $pdf->LoadView('quotes.quote_print', $data)
        ->setOption('page-size', 'A4');
    $path = storage_path() . "/quotes/{$customer->name}/cotizacion.pdf";
    $pdf->save($path);
    return $pdf->stream();


}

问题是当我第二次运行该函数时,我得到一个文件已经存在的错误。

【问题讨论】:

    标签: php pdf laravel-5.1


    【解决方案1】:

    我所做的是将覆盖函数添加到 save() 中,如下所示:

    public function save($filename, $overwrite = true)
    {
    
        if ($this->html)
        {
            $this->snappy->generateFromHtml($this->html, $filename, $this->options, $overwrite);
        }
        elseif ($this->file)
        {
            $this->snappy->generate($this->file, $filename, $this->options, $overwrite);
        }
    
        return $this;
    }
    

    我对此提出了拉取请求:https://github.com/barryvdh/laravel-snappy/pull/76,但这使用 $overwrite = false 作为默认值

    【讨论】:

      【解决方案2】:

      如果假设您将 barryvdh/laravel-snappylaravel 5.1

      一起使用

      你用来保存的函数save()不支持覆盖标志,它内部调用了支持覆盖标志的generateFromHtml,第四个参数。

      参见\vendor\barryvdh\laravel-snappy\src\PdfWrapper.php中的save方法

      public function save($filename)
      {
      
          if ($this->html)
          {
              $this->snappy->generateFromHtml($this->html, $filename, $this->options);
          }
          elseif ($this->file)
          {
              $this->snappy->generate($this->file, $filename, $this->options);
          }
      
          return $this;
      }
      

      我建议您使用以下方法将视图保存为 pdf

      public function quote($id){
      
          $quote          = Quotes::find($id);
          $last_quote     = sprintf("%'.04d\n", $quote->quote_number);
          $customer       = Customer::find($quote->customer_id);
          $items          = $quote->Items()->get();
          $fullinfo       = json_decode($quote->fullinfo);
          $token          = $quote->Tokens()->first();
      
          $data = [
              'quote'         => $quote,
              'last_quote'    => $last_quote,
              'customer'      => $customer,
              'items'         => $items,
              'fullinfo'      => $fullinfo,
              'token'         => $token,
          ];
      
          $pdf = App::make('snappy.pdf.wrapper');
      
          $html = view('quotes.quote_print', $data))->render();
          $path = storage_path() . "/quotes/{$customer->name}/cotizacion.pdf";
      
          //public function generateFromHtml($html, $output, array $options = array(), $overwrite = false)
          $pdf->generateFromHtml($html, $path,[],$overwrite = true);
          return $pdf->stream();
      
      
      }
      

      希望对你有帮助,

      K

      【讨论】:

        【解决方案3】:

        我今天在 laravel 中遇到了同样的问题。

        由于网络错误退出,代码为 1:ContentNotFoundError

        我尝试使用 url() 函数包装我的所有 css 和脚本链接。

        Example:
        Replace
                <link href="/css/bootstrap.min.css" rel="stylesheet">
        to         
            <link href="{{url('/css/bootstrap.min.css')}}" rel="stylesheet">
        And Replace
            <script src="{{url('/js/jquery-2.1.1.js')}}"></script>
        To
            <script src="{{url('/js/jquery-2.1.1.js')}}"></script>
        

        和我的代码工作。现在一切都很好。 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-23
          • 1970-01-01
          • 1970-01-01
          • 2016-12-07
          • 2015-07-27
          • 2016-11-05
          • 2019-04-04
          • 2019-07-19
          相关资源
          最近更新 更多