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!
php laravel.dompdf word pdf phpoffice phpword
Commentami!