$signature, 'type' => $signature->document_type, 'title' => $this->title($signature), 'payload' => $signature->payload ?? [], '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 => '授权委托书', }; } }