payload ?? []; $signatureDate = (string) ($payload['signature_date'] ?? $payload['entity_proof_date'] ?? $payload['shared_proof_date'] ?? ''); try { $signatureDate = $signatureDate !== '' ? Carbon::parse($signatureDate)->format('Y年n月j日') : '待填写'; } catch (\Throwable) { $signatureDate = '待填写'; } $html = view('business.pdf.courier-agreement', [ 'signature' => $signature, 'type' => $signature->document_type, 'title' => $this->title($signature), 'payload' => $payload, 'signatureDate' => $signatureDate, 'fontPath' => str_replace('\\', '/', resource_path('fonts/DroidSansFallback.ttf')), ])->render(); $pdf = app('dompdf.wrapper'); $pdf->setPaper('a4', 'portrait'); $pdf->loadHTML($html, 'UTF-8'); $bytes = $pdf->output(); if (! is_string($bytes) || ! str_starts_with($bytes, '%PDF-')) { throw new RuntimeException('协议 PDF 生成失败。'); } return $bytes; } private function title(CourierAgreementSignature $signature): string { return match ($signature->document_type) { 'account-proof' => '收款帐户资料证明', 'account-change' => '收款帐户资料变更证明', 'entity-change' => '公司主体变更证明', 'shared-contract' => '证明', 'cooperation-contract' => '服务协议', default => '授权委托书', }; } }