1

I have been running into the following problem when trying to convert a docx file into a pdf : the conversion works when I convert one file but fails when I want to convert them using Laravel jobs..

This is the error I get in the failed_jobs table :

ConvertApi\Error\Client: SSL certificate problem: unable to get local issuer certificate in C:\laragon\www\webapp_adminLTE\vendor\convertapi\convertapi-php\lib\ConvertApi\Client.php:119

This is where I call the jobs in my controller :

    public function menusEdition(Request $request){
    $menus = Menu::where('day',$request->day)->get();

    foreach($menus as $menu){
        $job = new MenusEdition($menu);
        $this->dispatch($job);
    }
    return back();
}

This is my job class :

<?php

namespace App\Jobs;

use App\Http\Controllers\MenusController;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class MenusEdition implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $menu;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($menu)
    {
        $this->menu = $menu;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(MenusController $menusController)
    {
        $menu = $this->menu;
        $menusController->templateEdition($menu->id);
        return;
    }
}

This is the method called by my job class :

    public function templateEdition($menuId)
{
    $menuModel = new Menu();

    $breakfast = $menuModel->getTitleMacroPerMeal($menuId,"Breakfast");
    $snack1 = $menuModel->getTitleMacroPerMeal($menuId,"Snack 1");
    $lunch = $menuModel->getTitleMacroPerMeal($menuId,"Lunch");
    $snack2 = $menuModel->getTitleMacroPerMeal($menuId,"Snack 2");
    $dinner = $menuModel->getTitleMacroPerMeal($menuId,"Dinner");

    $menu = Menu::find($menuId);

    $filepath = $menuModel->editMenuTemplate(
        $menu,
        $menu->meal_plan,
        $menu->date,
        $menu->customer_name,
        $breakfast,
        $snack1,
        $lunch,
        $snack2,
        $dinner,
        $menu->calories,
        $menu->carbs,
        $menu->proteins,
        $menu->fats
    );

    $result = ConvertApi::convert('pdf', ['File' => $filepath]);
    # save to file
    $pdfFile = str_replace('docx','pdf',$filepath);

    $result->getFile()->save($pdfFile);

    $storedFile = Storage::disk('public')->putFileAs('menus', new File($pdfFile), $menu->date.'-'.$menu->customer_name.'.pdf');

    return $storedFile;
}

Thank you very much for your help guys.

Louis Charles
  • 330
  • 4
  • 18

1 Answers1

0

Error message SSL certificate problem: unable to get local issuer certificate hints that some CA certificates are missing. I suggest to update / install root certificates.

On Windows:

Following links could help:

https://stackoverflow.com/a/32095378/316536

http://woshub.com/updating-trusted-root-certificates-in-windows-10/

On Ubuntu:

Install

sudo apt-get install ca-certificates

Update

sudo update-ca-certificates
Laurynas
  • 3,829
  • 2
  • 32
  • 22