Soweit ich es überblicke gibt es für TAChart noch keinen Exporter für PDF - oder hat sich da etwas geändert ?
Wenn sich nichts geändert hat - wie kann man einen Exporter testen ohne Lazarus für ein geändertes TAChart jedesmal neu zu übersetzen ? Nur das man den Exporter testen kann, ob alle notwendigen Funktionen sauber implementiert sind. Ich habe da mit Komponenten Entwicklung und Lazarus noch zu wenig Erfahrung.
Älter zum Thema:
viewtopic.php?t=13347
viewtopic.php?t=8982
Edit:
Ich nehme an das TAChart/demo/print demo könnte man dafür verwenden/adaptieren.
Dort: Via Print schaut das ganz gut aus, Print/w scaled auch, nur Print via Canvas schmeisst intern erstmal eine Exception in cupsdyn, druckt dann doch, aber nicht wirklich brauchbar. Die Beschriftung von X und Y sind viel zu eng und damit unlesbar bei mir.
Edit2:
Ich werde mich mal mit den Demos beschäftigen, sieht ja recht interessant aus.
TAChart PDF Export
- af0815
- Lazarusforum e. V.
- Beiträge: 7084
- 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:
TAChart PDF Export
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: TAChart PDF Export
Nein, einen offiziellen Exporter (in der Sprache von TAChart: eine "TChartDrawerPDF"-Klasse) gibt es nicht. Ich habe noch nichts mit dem in FPC integrierten PDF gemacht. Wenn er primitive Graphik-Operationen unterstützt (Linien, Rechtecke, Ellipsen, Polygon, verschiedene Füll- und Linienmuster, pixelgenaue Positionierung von Text, Drehung von Text) könnte ich mir denken, dass es nicht zu schwierig sein sollte, sich auf dieser Bases einen TChartDrawerPDF zu schreiben - sicher die sauberste Lösung.af0815 hat geschrieben: Fr 23. Jan 2026, 16:04 Soweit ich es überblicke gibt es für TAChart noch keinen Exporter für PDF - oder hat sich da etwas geändert ?
Als Ausweg habe ich gerade das print-Demo ausprobiert und in der Druckerauswahl-Kombobox des Druckerdialogs einen PDF-Drucker eingestellt (unter Windows, "Microsoft Print PDF", oder auch den externen "Expert PDF-14"), und mit "Print w/ Scaled Pen Width" sieht die Datei zu, sagen wir, 95% perfekt aus.
Eine andere Lösung wäre, den TFPVectorialDrawer zu nehmen. FPVectorial ist ein "abstraktes" Graphik-Zwischenformat, das man dann für verschiedene Formate ausgeben kann. Es gibt tatsächlich auch einen TvPDFVectorialWriter, der eine PDF-Datei schreiben kann. Wenn ich allerdings das TAChart-FPVectorial-Demo-Programm auf diesen Writer erweitere, stürzt das Demo-Programm wegen eines Font-Fehlers ab - da müsste man mal nachsehen. Und vor allem weiß ich nicht, wie gut und vollständig der PDFVectorialWriter geschrieben ist (üblicherweise ist bei FPVectorial das meiste halb fertig...)
Wiegesagt, du musst in TAChart selbst überhaupt nichts ändern: schreibe einen ChartDrawer für PDF (der muss alle abstrakten Methoden von IChartDrawer (in Unit TADrawUtils) implementieren) und verwende diesen Drawer für die Ausgabe des Chart - Beispiele gibt es in TAChart dafür einige. Oder bleib beim FPVectorial-Beispiel und verbessere den PDFWriter von FPVectorial, oder (falls die in FPC bereitgestellten PDF-Routinen besser sind als die in FPVectorial selbstgestrickten) schreibe einen neuen PDFWriter für FPVectorial auf der Basis der FPC-Units.af0815 hat geschrieben: Fr 23. Jan 2026, 16:04 Wenn sich nichts geändert hat - wie kann man einen Exporter testen ohne Lazarus für ein geändertes TAChart jedesmal neu zu übersetzen ? Nur das man den Exporter testen kann, ob alle notwendigen Funktionen sauber implementiert sind.
Re: TAChart PDF Export
Der Unterschied zwischen "Print" und "Print w/ scaled penwidth" ist, dass im letzteren die Linienbreiten im Verhältnis von Drucker- zu Bildschirm-Pixeldichte (ppi) vergrößert werden, dadurch sieht der Ausdruck in meinen Augen "natürlicher" aus.af0815 hat geschrieben: Fr 23. Jan 2026, 16:04 Ich nehme an das TAChart/demo/print demo könnte man dafür verwenden/adaptieren.
Dort: Via Print schaut das ganz gut aus, Print/w scaled auch, nur Print via Canvas schmeisst intern erstmal eine Exception in cupsdyn, druckt dann doch, aber nicht wirklich brauchbar. Die Beschriftung von X und Y sind viel zu eng und damit unlesbar bei mir.
"Print via Canvas" ist eher als abschreckendes Beispiel gedacht. Da TAChart intern immer noch kein LCL-Scaling unterstützt, werden alle linearen Distanzen unskaliert vom Bilschirm auf den riesigen Drucker-Canvas übertragen.
- af0815
- Lazarusforum e. V.
- Beiträge: 7084
- 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: TAChart PDF Export
Das Beispiel wirktwp_xyz hat geschrieben: Fr 23. Jan 2026, 18:22 "Print via Canvas" ist eher als abschreckendes Beispiel gedacht. Da TAChart intern immer noch kein LCL-Scaling unterstützt, werden alle linearen Distanzen unskaliert vom Bilschirm auf den riesigen Drucker-Canvas übertragen.
Danke für die vielen Infos. Da bin ich jetzt einmal beschäftigt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 7084
- 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: TAChart PDF Export
Nach der Durchsicht der Demos und der Überlegung was ich wirklich brauche, wird es auf eine Lösung über LazReport hinauslaufen. Bei den Beispiel geht das Drucken direkt 'relativ' einfach, da ich aber nicht nur eine TAChart drucken will, sondern genaugenommen eine komplexere Seite, wird das ganze 'zu Fuß' etwas unübersichtlich und fraglich zu warten.af0815 hat geschrieben: Fr 23. Jan 2026, 18:54 Danke für die vielen Infos. Da bin ich jetzt einmal beschäftigt.
Ich werde mal mit dem Ansatz weitermachen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).