【问题标题】:Conversion fails when running jobs (API Convertapi : docx to pdf)运行作业时转换失败(API Convertapi : docx to pdf)
【发布时间】:2019-11-25 01:16:41
【问题描述】:

我在尝试将 docx 文件转换为 pdf 时遇到了以下问题:当我转换一个文件时转换有效,但当我想使用 Laravel 作业转换它们时失败..

这是我在 failed_jobs 表中遇到的错误:

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

这是我在控制器中调用作业的地方:

    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();
}

这是我的工作课程:

<?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;
    }
}

这是我的作业类调用的方法:

    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;
}

非常感谢你们的帮助。

【问题讨论】:

    标签: laravel convertapi


    【解决方案1】:

    错误消息SSL certificate problem: unable to get local issuer certificate 提示缺少某些 CA 证书。我建议更新/安装根证书。

    在 Windows 上:

    以下链接可能会有所帮助:

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

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

    在 Ubuntu 上:

    安装

    sudo apt-get install ca-certificates
    

    更新

    sudo update-ca-certificates
    

    【讨论】:

      猜你喜欢
      • 2018-02-25
      • 2020-06-07
      • 2019-06-18
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多