fcl-pdf --> Navigantions-Baum --> Wie?
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
fcl-pdf --> Navigantions-Baum --> Wie?
Mahlzeit
Dev-OS=Win11-64Bit
Laz 4.3-64Bit
FPC 3.2.3-64Bit
target=Win64
Arbeite weiter an meinem Programm für die Firma, und damit zusammenhängend Export nach PDF.
Es kam der Wunsch auf, in dem exportierten PDF diesen "Navigations-Baum" anzubieten (siehe Screenshot)
Wie?
Ich dachte zuerst an das "poOutline" (siehe auch mein Bug-Thread), bin mir aber da komplett unsicher, ob ich da auf dem Holzweg bin.
Die Daten, welche ich nach PDF exportiere, sind selbst auch eine Baumstruktur (siehe mein VirtualStringTree-Thread), und jeder Node (ausser der untersten Ebene) soll eine eigene Seite im PDF sein, jedoch an der richtigen Stelle "eingerückt"
Der Baum ist 3 Levels tief:
Kategorien --> Diese sind direkt im Root
Kapitel --> diese sind jeweils einer Kategorie untergeordnet
Kompetenz --> diese sind jeweils einem Kapitel untergeordnet
Und in das PDF soll jetzt eben:
"Gesamt" als oberster Knoten
die (zur Zeit) 4 Kategorien "eingerückt unterhalb von Gesamt"
die Kapitel jeweils "eingerückt unterhalb ihrer übergeordneten Kategorie"
Mir ist klar, dass das nach Rekursion riecht, habe aber davor nicht wirklich Angst
Dev-OS=Win11-64Bit
Laz 4.3-64Bit
FPC 3.2.3-64Bit
target=Win64
Arbeite weiter an meinem Programm für die Firma, und damit zusammenhängend Export nach PDF.
Es kam der Wunsch auf, in dem exportierten PDF diesen "Navigations-Baum" anzubieten (siehe Screenshot)
Wie?
Ich dachte zuerst an das "poOutline" (siehe auch mein Bug-Thread), bin mir aber da komplett unsicher, ob ich da auf dem Holzweg bin.
Die Daten, welche ich nach PDF exportiere, sind selbst auch eine Baumstruktur (siehe mein VirtualStringTree-Thread), und jeder Node (ausser der untersten Ebene) soll eine eigene Seite im PDF sein, jedoch an der richtigen Stelle "eingerückt"
Der Baum ist 3 Levels tief:
Kategorien --> Diese sind direkt im Root
Kapitel --> diese sind jeweils einer Kategorie untergeordnet
Kompetenz --> diese sind jeweils einem Kapitel untergeordnet
Und in das PDF soll jetzt eben:
"Gesamt" als oberster Knoten
die (zur Zeit) 4 Kategorien "eingerückt unterhalb von Gesamt"
die Kapitel jeweils "eingerückt unterhalb ihrer übergeordneten Kategorie"
Mir ist klar, dass das nach Rekursion riecht, habe aber davor nicht wirklich Angst
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: fcl-pdf --> Navigantions-Baum --> Wie?
hmmm.....hab das hier gefunden:
viewtopic.php?t=14955
Liege also auch mit meiner Vermutung richtig, dass es die "Outlines" sind.
Und den KABUMM aus meinem Bug-Thread wird auch bestätigt
viewtopic.php?t=14955
Liege also auch mit meiner Vermutung richtig, dass es die "Outlines" sind.
Und den KABUMM aus meinem Bug-Thread wird auch bestätigt
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: fcl-pdf --> Navigantions-Baum --> Wie?
OK, so wie ich es verstehe, ist so ein Navi-Baum mit fcl-pdf nicht möglich.
Da gibts nur die Möglichkeit als reines Inhaltsverzeichnis (ohne "Baum-Struktur"), und ich habe schon die ersten Anzeichen gefunden, dass die Titel dann auch skurril aussehen
Überall wird auf mormot2 (bzw. Synopse PDF) verwiesen, aber das unter Lazarus zum laufen zu bekommen scheint ja Raketen-Wissenschaft zu sein.
Zumal anscheinend mormot.ui.pdf zwar mitgeliefert wird, aber selbst nicht im LPK drin ist.
*seufz*
Hilfe?
*liebguck*
Da gibts nur die Möglichkeit als reines Inhaltsverzeichnis (ohne "Baum-Struktur"), und ich habe schon die ersten Anzeichen gefunden, dass die Titel dann auch skurril aussehen
Überall wird auf mormot2 (bzw. Synopse PDF) verwiesen, aber das unter Lazarus zum laufen zu bekommen scheint ja Raketen-Wissenschaft zu sein.
Zumal anscheinend mormot.ui.pdf zwar mitgeliefert wird, aber selbst nicht im LPK drin ist.
*seufz*
Hilfe?
*liebguck*
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1844
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Also in dem Package PowerPDF (OPM) gibt es ein Beispiel MakeDoc.lpi, das genau so einen Baum generiert.
Um den Tree abzuarbeiten, könnte man rekursiv durchrennen und über den NodeLevel in Erfahrung bringen, wo man gerade ist.
Um den Tree abzuarbeiten, könnte man rekursiv durchrennen und über den NodeLevel in Erfahrung bringen, wo man gerade ist.
Code: Alles auswählen
procedure Button1Click(Sender : TObject);
procedure processNode(Node : PVirtualNode);
var MyObject : TMyObject;
Level : Integer;
begin
while Assigned(Node) do
begin
MyObject := TMyObject(Tree.GetNodeData(Node)^);
Level := Tree.GetNodeLevel(Node); // 0 = Kategorie, 1 = Kapitel, 2 = Kompetenz
MyObject.PDFAusgabe(Level);
processNode(Node^.FirstChild);
Node := Node.NextSibling;
end;
end;
begin
processNode(Tree.GetFirst);
end;
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Hmm.... OK.fliegermichl hat geschrieben: Do 1. Okt 2026, 11:20 Also in dem Package PowerPDF (OPM) gibt es ein Beispiel MakeDoc.lpi, das genau so einen Baum generiert.
Um den Tree abzuarbeiten, könnte man rekursiv durchrennen und über den NodeLevel in Erfahrung bringen, wo man gerade ist.Code: Alles auswählen
procedure Button1Click(Sender : TObject); procedure processNode(Node : PVirtualNode); var MyObject : TMyObject; Level : Integer; begin while Assigned(Node) do begin MyObject := TMyObject(Tree.GetNodeData(Node)^); Level := Tree.GetNodeLevel(Node); // 0 = Kategorie, 1 = Kapitel, 2 = Kompetenz MyObject.PDFAusgabe(Level); processNode(Node^.FirstChild); Node := Node.NextSibling; end; end; begin processNode(Tree.GetFirst); end;
Danke, michl.
Ja, das mit dem NodeLevel-Check ist mir klar (und wird bereits angewendet).
Aber: Null Erfahrung mit PowerPDF.
Muss ich mir also die Doku zusammen suchen.
NotaBene: das PDF-Modul von mormot2 hab ich jetzt mal zumindest so eingebunden bekommen, dass es sauber kompiliert.
Man muss aber auch erst mal darauf kommen, dass mormot in einer reinen Konsolen-Anwendung (was ich für meine tests genutzt habe, weil... was hat PDF erzeugen mit einer GUI zu tun?) eben nicht läuft, weil es einen grossen Teil der LCL benötigt.
Und diese Tatsache habe ich in einem Kommentar im Quellcode gefunden!!
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- af0815
- Lazarusforum e. V.
- Beiträge: 7453
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Sehr viel Sachen, was mit Schriften zu tun haben, verwenden die LCL. Das war auch so eine Herausforderung für den FP- Report, genaugenommen mit dem PDF Exporter. Der hat auch keine LCL, braucht aber Infos zu den Schriftgrößen, würde dort auch gelöst.
So wird es hier auch sein.
Mormot und Mormot2 lassen sich normalerweise installieren, wenn man stur die Anleitung befolgt, ja nicht denken. Und genau die Versionen von Libs was gefordert sind. Und ja Mormot ist absolut keine leichte Kost. Dafür aber sehr mächtig.
So wird es hier auch sein.
Mormot und Mormot2 lassen sich normalerweise installieren, wenn man stur die Anleitung befolgt, ja nicht denken. Und genau die Versionen von Libs was gefordert sind. Und ja Mormot ist absolut keine leichte Kost. Dafür aber sehr mächtig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Ja, das installieren aus OPM war keine leichte Kost, insbesondere die "Folder-Injection" der statics.af0815 hat geschrieben: Do 1. Okt 2026, 14:07 Sehr viel Sachen, was mit Schriften zu tun haben, verwenden die LCL. Das war auch so eine Herausforderung für den FP- Report, genaugenommen mit dem PDF Exporter. Der hat auch keine LCL, braucht aber Infos zu den Schriftgrößen, würde dort auch gelöst.
So wird es hier auch sein.
Mormot und Mormot2 lassen sich normalerweise installieren, wenn man stur die Anleitung befolgt, ja nicht denken. Und genau die Versionen von Libs was gefordert sind. Und ja Mormot ist absolut keine leichte Kost. Dafür aber sehr mächtig.
Was sich mir aber komplett entzieht: im mormot2-ordner gibts es unter packages (?) einen Lazarus-Unterordner, mit eigenen lpk's
Wat nu?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- af0815
- Lazarusforum e. V.
- Beiträge: 7453
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Ich würde Mormot2 immer aus den originalen Quellen installieren, nicht über OPM. In der Installations Anleitung dort ist für mich alles geklärt. Dann auch stur einmal die Beispiele probieren.
Ist mein Zugang.
Ist mein Zugang.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1844
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Ich habe mir das in fcl-pdf nochmal angesehen.
Wenn man PDF.Options := PDF.Options + [poOutline] eingibt (Vor PDF.StartDocument), dann wird so eine Struktur erzeugt.
Diese ist aber eindimensional.
Es gibt noch die Eigenschaft Sections wobei man mit Section := PDF.Sections.AddSection; neue Sektionen hinzufügen kann.
Der Section kann man mit Section.AddPage(aPage); auch Seiten hinzufügen. Diese werden dann zwar in der Strukturübersicht angezeigt aber ein anklicken bewirkt nichts.
Da kann man durchaus noch verbessern.
Wenn man PDF.Options := PDF.Options + [poOutline] eingibt (Vor PDF.StartDocument), dann wird so eine Struktur erzeugt.
Diese ist aber eindimensional.
Es gibt noch die Eigenschaft Sections wobei man mit Section := PDF.Sections.AddSection; neue Sektionen hinzufügen kann.
Der Section kann man mit Section.AddPage(aPage); auch Seiten hinzufügen. Diese werden dann zwar in der Strukturübersicht angezeigt aber ein anklicken bewirkt nichts.
Da kann man durchaus noch verbessern.
- Zvoni
- Beiträge: 760
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: fcl-pdf --> Navigantions-Baum --> Wie?
Hier sollte noch erwähnt werden, dass dies derzeit nur funktioniert, wenn Sections.Count>1 ist, sonst gibts ein KABUMM.fliegermichl hat geschrieben: Fr 2. Okt 2026, 10:21 Ich habe mir das in fcl-pdf nochmal angesehen.
Wenn man PDF.Options := PDF.Options + [poOutline] eingibt (Vor PDF.StartDocument), dann wird so eine Struktur erzeugt.
Ist aber anscheinend in "main" schon gefixt
Tja, und eben dieses Eindimensionale reicht bei mir nicht.Diese ist aber eindimensional.
Es gibt noch die Eigenschaft Sections wobei man mit Section := PDF.Sections.AddSection; neue Sektionen hinzufügen kann.
Der Section kann man mit Section.AddPage(aPage); auch Seiten hinzufügen. Diese werden dann zwar in der Strukturübersicht angezeigt aber ein anklicken bewirkt nichts.
Da kann man durchaus noch verbessern.
Ich werd mal mit mormot2 bzw. PowerPDF rumspielen, ob ich da was gebacken bekomme.
das PDF-Modul von mormot2 reizt mich deshalb, weil man da, nebst eines echten Navigations-Baums, anscheinend direkt auf den PDF-Canvas zeichnen kann, statt wie bei fcl-pdf den Umweg über JPEG zu gehen,
und bei mir gehts eben darum, TACharts nach PDF zu bekommen, und wenn ich mich nicht irre hat das TAChart eben so einen Canvas bzw. bei der PaintTo/PaintOnCanvas-Methode dann einfach das PDF-Canvas als Ziel nehmen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.