Convertire file Word in PDF con Laravel

Mattepuffo's logo
Convertire file Word in PDF con Laravel

Convertire file Word in PDF con Laravel

Comincio col dire che la conversione non è un'operazione difficile da fare, ma è molto probabile che con file Word complessi il PDF non risulterà esattamente lo stesso.

O almeno così è capitato a me.

Vediamo comunque come fare usando PHP e Laravel.

Prima di tutto dobbiamo installare due librerie:

$ composer require phpoffice/phpword
$ composer require barryvdh/laravel-dompdf

Come potete vedere sono librerie che abbiamo già visto in altri ambiti.

Prossimo step registrare il service provider; aprite il file config/app-php:

​'providers' => [
 .....
 Barryvdh\DomPDF\ServiceProvider::class,
]

Poi dobbiamo aggiungere un alias sempre nello stesso file:

'aliases' => [
 .....
 'PDF' => Barryvdh\DomPDF\Facade::class,
]

Passiamo al controller; ad esempio:

$ php artisan make:controller ConvertController

Che dovete modificare aggiungendo la conversione:

namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use PDF;
 
class ConvertController extends Controller {
    public function index() {
        $domPdfPath = base_path('vendor/dompdf/dompdf');
        \PhpOffice\PhpWord\Settings::setPdfRendererPath($domPdfPath);
        \PhpOffice\PhpWord\Settings::setPdfRendererName('DomPDF');
         
        $fileWord = \PhpOffice\PhpWord\IOFactory::load(public_path('test.docx')); 
 
        $pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($fileWord, 'PDF');
        $pdfWriter->save(public_path('test.pdf'));
    }
}

Questo salverà il file sul server; dovete solo:

  • decidere se fare eseguire il download subito, oppure creare un link apposito
  • aggiungere una route per interagire col controller

Enjoy!


Condividi

Commentami!