feat: F4.8d the documentation mode's report as a PDF, as Java's
ReportRun reads Java's report back with iText: every piece of text with its place, font, size and colour. The editor lays the report out by iText's rules (A4, leading 1.5, loose chunks in the current line, tables 80 % wide with padding 2, fixed traffic columns, page breaks) and draws it with pdf-lib in the PDF's own Helvetica, widths without kerning as iText measures. All device pages of Internet_Komplett, the first page and the data exchange of einfaches_rechnernetz_komplett match Java piece by piece; Java's iText reads our PDF with the same text in the same places. The sidebar gains Java's "Report"; the frames come from the room by a short subscription. Not adopted: true/false for DHCP (Java's own Ja/Nein), hash table orders, an image running off the page, the report writing back into the model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1731,3 +1731,53 @@ Gemessen (04.10.2026):
|
||||
Falle der Sonde: Das Druckpanel nimmt Javas Geräte-Etiketten aus der
|
||||
Oberfläche (eine Swing-Komponente hat nur einen Elternteil); erst
|
||||
`updateViewport` legt sie zurück.
|
||||
|
||||
### Dokumentation: „Report“ (F4.8d)
|
||||
|
||||
`ReportRun` öffnet ein Projekt wie Javas Menü, lässt es auf Wunsch eine
|
||||
Weile laufen (alle Knoten `starten`, dann `beenden`; der Lauscher behält die
|
||||
Rahmen wie nach einer Simulation) und schreibt mit
|
||||
`ReportGenerator.generateReport` Javas PDF. Das liest es mit iTexts eigenem
|
||||
Parser zurück: jedes Textstück mit Ort, Schrift, Größe (aus dem privaten
|
||||
Grafikzustand per Reflection) und Farbe, jedes Bild mit Ort und Größe, Titel
|
||||
und Ersteller. Drei Projekte (`einfaches_rechnernetz_komplett` nach 3 s
|
||||
Lauf, `Internet_Komplett_…_DE`, die Fixture `documentation.fls`) und ein
|
||||
leeres (`packages/editor/test/report.java.json`). Mit `--read` liest es ein
|
||||
beliebiges PDF allein, mit SHA-256: so liest Javas iText den Bericht des
|
||||
Editors (`report.ours.java.json`).
|
||||
|
||||
Gemessen (04.10.2026):
|
||||
|
||||
* A4, 36 Rand; Titel Helvetica-Bold 18 in (30, 50, 120), mittig; darunter
|
||||
der Pfad in Helvetica 8; „1. Übersicht“ mit Javas Bild in Seitenbreite,
|
||||
eine halbe Zeile unter der Überschrift; neue Seite „2. Komponenten“; neue
|
||||
Seite „3. Datenaustausch“, nur wenn der Lauscher Rahmen hat.
|
||||
* Überschriften Helvetica-Bold 14/12/10 in Dunkelgrau (64), Ebene 1 und 2
|
||||
nummeriert („2.1. “), Ebene 3 nicht. Zeilenabstand das 1,5-Fache der
|
||||
Schrift; lose Textstücke (`Chunk`) laufen in derselben Zeile mit dem
|
||||
Abstand des letzten Absatzes, bis `Chunk.NEWLINE` sie beendet.
|
||||
* Tabellen: 80 % der Breite, links, Spalten im Verhältnis (180:360,
|
||||
3 × 180, 180:60:260, 4 × 180); Zellen mit 2 Innenabstand, Zeilen so weit
|
||||
auseinander wie die Schrift groß ist; eine Zeile, die unter den Rand
|
||||
reicht, beginnt die nächste Seite (ohne Kopfzeile). Datenaustausch: feste
|
||||
Spalten 20/60/80/80/40/50/180, mittig, Helvetica 8, Kopf hellblau (230,
|
||||
240, 255), jede zweite Zeile grau (240).
|
||||
* Je Gerät mit Karten (nicht Switch, nicht Modem): Gateway, DNS-Server, bei
|
||||
Rechnern „DHCP zur Konfiguration verwenden“ als `true`/`false`; Karten;
|
||||
bei Rechnern „Installiert: “ und die Programme (oder „-“), in der
|
||||
Reihenfolge einer HashMap; mit DNS-Server dessen Einträge;
|
||||
Weiterleitungstabelle (nur Zeilen mit einer Adresse als Ziel); beim
|
||||
Heimrouter die Portweiterleitung, wenn eine Zeile ein bekanntes Protokoll
|
||||
hat. Datenaustausch je Karte mit Rahmen („Name - Adresse“), die Zeilen
|
||||
von `Lauscher.getDaten(id, true, 0)`, in der Reihenfolge einer HashMap.
|
||||
* Leeres Projekt: Titel ohne Namen, kein Pfad; das leere 20 × 35-Bild wird
|
||||
auf Seitenbreite 915 hoch und läuft über den Rand einer eigenen Seite.
|
||||
* Java-Fehler am Rande: der Bericht schreibt die Protokolle der
|
||||
Portweiterleitung („6“ → „TCP“) ins Modell zurück und gibt eine
|
||||
Debug-Zeile auf der Konsole aus.
|
||||
|
||||
Fallen der Sonde: iText legt Absätze und Tabellen in eigene Ebenen, die
|
||||
Zeichenreihenfolge im PDF ist darum nicht die der Seite (der Test vergleicht
|
||||
nach Ort). Die Uhrzeiten des Datenaustauschs sind Javas Wanduhr; der Test
|
||||
nimmt Javas Zeilen aus Javas Seiten, damit der Satz verglichen wird, nicht
|
||||
der Lauf.
|
||||
|
||||
Reference in New Issue
Block a user