Hallo Sven,
kurz folgender Tipp vorweg bezüglich der Entwicklung von Irgendetwas:
Wenn etwas hartnäckig nicht funktioniert, dann reduziere indem du alles andere, was bereits funktioniert, entfernst oder minimierst.
Konzentriere dich dann auf den kleinen Teil der noch nicht funktioniert.
Dann werden auch alle Listings und Beispiele und Darstellungen, halt die ganz Arbeiten des Problemlösens, deutlich einfacher und übersichtlicher und handlicher.
Zu 'Meine Erwartung war, dass alles was im <tr>Tag ist, gelooped wird. und dadurch dieser Schnipsel so oft untereinander angereiht wird wie es Datensätze (Bilder) gibt.'
Kurze Antwort: Nö.
Lange Antwort:
Hier zum 1: n Verständnis, also wann und woher die Bilder kommen und wohin sie kommen.
1 - Lies mal das hier.
Das komplette PDF-Template oder nur einen Teil vervielfachen:
docs.joomla-4.visforms.vi-solutions.de/d...nced-sql-statements/
Es geht hier um 'jeden ausgewählten Datensatz des Formulars'.
Für jeden (ausgewählten) Datensatz des Formulars gibt es einen Durchgang, eine Wiederholung, ein komplettes PDF-Template im fertigen PDF-Dokument.
Mit einem HTML-Elements mit dem class="loop" Attribut wird nur dieser kleine Teil des PDF-Template vervielfältigt, auch hier für jeden Datensatz des Formulars.
2 - Lies mal das hier.
Sekundäre SQL-Statements:
docs.joomla-4.visforms.vi-solutions.de/d...%A4re-sql-statements
Es geht hier um die zusätzliche Daten, zusätzliche Tabellen, also zusätzlich zum aktuellen Datensatz des Formulars, auf dem dein PDF-Template aufbaut.
3 - Lies mal das hier.
Sekundäre SQL-Statements an ein HTML-Element binden
docs.joomla-4.visforms.vi-solutions.de/d...%A4re-sql-statements
Es geht hier um das Ausführen eines zusätzlichen SQL-Statements im Kontext des aktuellen Datensatz des Formulars.
Hier entstehen deine Bilder entsprechend deines SQL-Statements.
Pro Ergebnisdatensatz des zusätzlichen SQL-Statements wird der HTML-Bereich kopiert, bearbeitet und an Ort und Stelle eingefügt.
Zitat: 'ein class="sql" Attribut zu Kennzeichnung des Wiederhol-Bereiches'.
4 - Das vereinfachte (2 Spalten entfernt) Dokument-HTML aus dem PDF-Template meines Beispiels von oben:
vi-solutions.de/forum-uploads/pdf-exampl...s-per-row_simple.png
Code:
<p style="text-align: center;"><span style="font-size: 14pt; text-align: center;"><strong>Bilderliste</strong></span></p>
<table border="1" width="100%" cellpadding="4">
<thead>
<tr style="font-weight: bold; background-color: lightskyblue;">
<th colspan="1" align="center">Nachname</th>
<th colspan="4" align="center">Link</th>
</tr>
</thead>
<tbody>
<tr class="loop">
<td colspan="1" align="left">${last}</td>
<td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td>
</tr>
</tbody>
</table>
Für jeden (ausgewählten) Datensatz des Formulars wird folgendes wiederholt (primär):
Darin wird dann für diesen aktuellen Datensatz des Formulars folgendes wiederholt (sekundär).
Für jedes Ergebnis (4 Bilder bei dir und mir) des zusätzlichen sekundären SQL-Statements ('Dokumente' bei dir, 'link' bei mir) im Kontext des aktuellen Datensatz:
Code:
<td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td>
'Im Kontext des aktuellen Datensatz' bedeutet folgendes:
Code:
select url from links where id = '${item:age}';
Wobei ${item:age} bedeutet: aus dem aktuellen Datensatz des Formulars ('item') verwende an dieser Stelle den Wert des Formular-Feldes 'age'.
Wenn das soweit bei dir passt ( class="loop" gegenüber class="sql"):
- geht es um die passende Darstellung der Bilder im HTML, welches dann nach PDF konvertiert wird.
Ich habe mich in meinem Beispiel für eine Tabelle mit 'colspan' Angaben entschieden.
Das sind dann reine HTML-Themen.
Bei der Konvertierung von HTML nach PDF durch die PDF-Bibliothek 'TCPDF' funktionieren viele Sachen sehr gut, andere nicht (CSS ist insbesondere beschränkt).
- musst du für 4 vertikale Bilder einfach mal verschiedene Möglichkeiten ausprobieren (etwa eine Bilder-Tabelle im <td> der Haupt-Tabelle oder anderes).
Verwende nicht gleich die fertige finale große komplette Lösung, sondern halte dein Beispiel zum Ausprobieren eben möglichst klein und simpel.
Liebe Grüße, Ingmar