Laravel 5.1 - barryvdh/laravel-dompdf, PDF file download not working properly

江枫思渺然 提交于 2020-06-08 05:34:21

问题


I have installed 'barryvdh/laravel-dompdf' using composer and added these lines

Barryvdh\DomPDF\ServiceProvider::class
'PDF'=>  Barryvdh\DomPDF\Facade::class

to 'app.php' file in 'config' folder and also created PdfController, like this

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App;
use PDF;

class PdfController extends Controller
{
    public function invoice()
    {
        $pdf = App::make('dompdf.wrapper');
        $pdf->loadHTML('<h1>Test</h1>');
        return $pdf->stream('testfile')
               ->header('Content-Type','application/pdf');
    }
}

now the code works fine , contents are show in browser in pdf format, but when i download this file, the file doesn't have any extension.I tried to modify the line containing return code like

return $pdf->stream('testfile.pdf')
                   ->header('Content-Type','application/pdf');

But now, page directly provides file to download with name 'document.pdf' which shows error while downloading,(dont konw how and from where this name 'document.pdf' came from). Also i m working on localhost.


回答1:


I had the same problem, after searching all over without results, I decided to play with the code and this worked for me.

Inside config/app.php

-> under providers add the line of code,

'Barryvdh\DomPDF\ServiceProvider' not Barryvdh\DomPDF\ServiceProvider::class,

-> under aliases add the line of code,

'PDF'       => 'Barryvdh\DomPDF\Facade' not 'PDF' => Barryvdh\DomPDF\Facade::class,

Mind the quotes and commas! Check the images above,

-> In your controller add the line of code, use App;

Hopefully, you will be good to go....test using the lines of code..place them inside a method in your controller.

$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

On success, your browser will open a PDF Viewer with a white PDF with the word Test

Cheers, enjoy your coding ;)




回答2:


What do you want to do with pdf ? To show in browser or to download to disc? this is example where pdf is downloaded

return $pdf->download('pdfName.pdf'); 

example from my code where i show notebook information in pdf

   $laptop = Notebook::findOrFail($id);
        $data['laptop'] = $laptop;
        $pdf = \PDF::loadView('pdf.detaljiLaptop', $data);

        return $pdf->download($laptop->modelName.' Computers.pdf'); 



回答3:


I use this code view()->share($data); $pdf = PDF::loadview('sale.pdf'); return $pdf->download('slip_out.pdf');

instead of

return $pdf->stream('testfile.pdf')
               ->header('Content-Type','application/pdf');


来源:https://stackoverflow.com/questions/34493647/laravel-5-1-barryvdh-laravel-dompdf-pdf-file-download-not-working-properly

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!