生成pdf

This commit is contained in:
2026-01-09 13:08:17 +08:00
parent 3d7da36645
commit 620ef3fe3a
7 changed files with 151 additions and 32 deletions
@@ -2,9 +2,11 @@
namespace app\common\controller;
use app\common\controller\BaseController;
use app\common\model\UsedCar;
use app\common\service\OssService;
use app\common\traits\crud\CrudControllerTrait;
use app\common\service\UsedCarService;
use app\common\utils\pdf\service\MpdfDriver;
use support\Request;
class UsedCarController extends BaseController
@@ -64,6 +66,16 @@ class UsedCarController extends BaseController
}
$data['images_pull'] = $images_pull;
}
if (!empty($data['attachment'])){
$attachments = explode(',', $data['attachment']);
$ossService = new OssService();
$attachment_pull = [];
foreach ($attachments as $attachment){
$attachment_pull[] = $ossService->generatePrivateUrl($attachment);
}
$data['attachment_pull'] = $attachment_pull;
}
return $data;
}
@@ -77,4 +89,39 @@ class UsedCarController extends BaseController
return $this->error($e->getMessage());
}
}
public function producePdf(Request $request){
try {
$raw = $this->service->serviceShow($request);
$data = $this->transformData($raw, method_exists($this, 'showFormat')
? [$this, 'showFormat']
: null);
$images = [];
foreach ($data['images_pull'] as $key => $image){
$images[] = $this->service->downloadImage($image);
}
$data['images'] = $images;
$pdf = (new MpdfDriver())->exportUsedCarPdf($data);
UsedCar::where('id', $data['id'])->update(['pdf_src' => $pdf]);
array_map('unlink', glob(runtime_path('pdf/images/*.jpg')));
return $this->success($pdf);
} catch (\Throwable $e) {
return $this->error($e->getMessage().$e->getLine().$e->getFile());
}
}
public function downloadPdf(Request $request){
$raw = $this->service->serviceShow($request);
$filePath = runtime_path('pdf') . $raw['pdf_src'];
if (!file_exists($filePath)) {
return response('文件不存在', 404);
}
return response()->download(
$filePath,
$raw['product_name'].'-'.$raw['id'].'pdf' // 下载时显示的文件名
);
}
}