{{-- v3.5 §2 — Gabarit PROPRE au rapport complet du marché : page de garde, en-tête et pied répétés, pagination. Il ne remplace pas `pdf/layout.blade.php`, qui sert les documents d'une page (facture, devis, KPI) et n'a besoin ni de garde ni de numérotation. --}} @php $logoGarde = \App\Support\Identite::cheminLogo(); // v3.7 §B4 — LE LOGO EST DIMENSIONNÉ ICI, PAS EN CSS. dompdf applique `max-width` et // `max-height` sur une image de façon inconstante : avec les deux, il en retient un et étire // l'autre. Un logo large ressortait donc écrasé, un logo haut débordait de la page de garde. // On lit les dimensions réelles, on calcule le facteur qui fait tenir l'image dans la boîte, et // on pose `width`/`height` en dur. Une image ne se déforme plus, quelle que soit sa forme. $logoLargeur = null; $logoHauteur = null; if ($logoGarde !== null) { $taille = @getimagesize($logoGarde); if (is_array($taille) && ($taille[0] ?? 0) > 0 && ($taille[1] ?? 0) > 0) { $facteur = min(300 / $taille[0], 96 / $taille[1], 1); $logoLargeur = (int) round($taille[0] * $facteur); $logoHauteur = (int) round($taille[1] * $facteur); } } // Le rappel de pied : « CODE — Intitulé », sauf quand le code EST l'intitulé — auquel cas // « PNI — PNI » n'apporte rien et occupe la place. $memeChose = $project->code !== null && mb_strtolower(trim($project->code)) === mb_strtolower(trim($project->name)); // v4.38.0 §4 bis — le rappel d'en-tête et de pied est le libellé court ; la page de garde // garde l'intitulé complet et le code (c'est la fiche du marché, imprimée). $rappel = $project->libelle(); @endphp
{{ $rappel }} {{ $companyName }} — Rapport complet du marché
{{-- Cellule laissée vide : « Page X / Y » y est dessiné sur la toile après la mise en page, seul moment où dompdf connaît le nombre total de pages. --}}
{{ $rappel }} — édité le {{ $generatedAt->format('d/m/Y à H:i') }}
{{-- Page de garde --}}
@if ($logoGarde !== null) {{ $companyName }} @endif
{{ $companyName }}
Rapport complet du marché
{{ $project->libelle() }}
{{ $project->name }}
@if ($project->code && ! $memeChose)
{{ $project->code }}
@endif
Édité le {{ $generatedAt->format('d/m/Y à H:i') }}
@foreach ([ '1. Identité du marché', '2. Position financière — les quatre lignes', '3. Les trois registres de chiffre d\'affaires', '4. Décomptes, factures, encaissements', '5. Bons de commande', '6. Coût humain', '7. Dépenses', '8. Structure allouée', '9. Marge', '10. Dates clés et échéances', '11. Cautions', ] as $entree) @endforeach
{{ $entree }}
@yield('content')