LazReport mit anderer Schriftart

Rund um die LCL und andere Komponenten
Antworten
plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

LazReport mit anderer Schriftart

Beitrag von plinius »

Hallo,

kurze Frage. Wenn ich einen Report erstelle und eine andere Schrift, z.B. Courier verwende, so wird der
Report am Bildschirm richtig dargestellt. Wenn ich ihn als PDF speichere, oder ausdrucke, ist die Schrift
wieder Standard, würde sagen Arial. Ist das Absicht? (Kompatibilität? Windows <-> Linux <-> Mac)

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: LazReport mit anderer Schriftart

Beitrag von paweld »

Das liegt daran, dass auf dem System, auf dem Sie die PDF-Datei öffnen/drucken, die Schriftart, die im Bericht verwendet wurde, nicht mehr existiert.
Sie können dem vorbeugen, indem Sie die PDF-Datei zusammen mit den Schriftarten speichern, aber dann ist die Datei um ein Vielfaches größer.
Grüße / Pozdrawiam
paweld

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Das liegt daran, dass auf dem System, auf dem Sie die PDF-Datei öffnen/drucken, die Schriftart, die im Bericht verwendet wurde, nicht mehr existiert.
Es ist ein und der gleiche Rechner.

Es scheint mir das "PrepareReport" alle Formatierungen übernimmt, aber die Schriftart nicht berücksichtigt.

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: LazReport mit anderer Schriftart

Beitrag von paweld »

Mit welcher Komponente exportieren Sie in diesem Fall den Bericht in PDF? Oder beziehen Sie sich auf einen PDF-Drucker?
Im Allgemeinen ist mir ein solches Phänomen noch nicht begegnet. Wenn Sie können, geben Sie bitte mehr Details an, d.h. welche Version von lazarus/fpc, welches Betriebssystem
Grüße / Pozdrawiam
paweld

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Code: Alles auswählen

      if GO_Report.PrepareReport then begin
         GO_Report.ExportTo(TfrTNPDFExportFilter, SaveDialog1.FileName);
         my_MessageOK('Hinweis', 'PDF-Export erfolgreich ausgeführt!', 'Folgende Datei wurde erstellt: ' + SaveDialog1.FileName);
      end;
Windows 11

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Lazarus 3.2 (rev 9c6333cd) FPC 3.2.2 i386-win32-win32/win64

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Er nimmt aber auch beim Ausdruck die Standardschrift. (Die Anzeige erscheint korrekt mit Courier)

Code: Alles auswählen

   if PrintDialog1.Execute then begin
      try
         Printer.SetPrinter(Printer.PrinterName);
         if GO_Report.PrepareReport then begin
            GO_Report.PrintPreparedReport('', 1);
         end;
      finally
         //
      end;
   end;      

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: LazReport mit anderer Schriftart

Beitrag von paweld »

Im Anhang finden Sie ein Beispiel (erfordert das Paket „lr_pdfexport“), sowohl die Vorschau als auch der Ausdruck und die pdf-Datei verwenden die im Editor ausgewählten Schriftarten.
Dateianhänge
2024-09-25 23_22_27-report.pdf - [project1] - SumatraPDF.png
2024-09-25 23_22_27-report.pdf - [project1] - SumatraPDF.png (139.75 KiB) 1837 mal betrachtet
project1.zip
(5.77 KiB) 56-mal heruntergeladen
Grüße / Pozdrawiam
paweld

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Ich habe mal ein ganz einfaches Beispiel erstellt.

1. frReport und frTNPDFExport auf ein Formular ziehen.
2. Ein Button bekommt folgendes in OnClick Ereignis

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
   xMemo     : TfrMemoView;
   xMargin   : Integer;
   xTop      : Integer;
   xWidth    : Integer;
   xHeight   : Integer;

begin
   frReport1.Pages.Add;

   xMemo                    := TfrMemoView.Create(frReport1.Pages[0]);
   xMemo.Font.Name          := 'COURIER';
   xMemo.Font.Size          := 12;
   xMemo.Font.Bold          := False;
   xMemo.Font.Italic        := False;
   xMemo.Font.Underline     := False;
   xMemo.Font.Color         := clBlack;

   xMemo.FillColor          := clWhite;
   xMemo.AutoSize           := False;

   xMargin                  := 10;
   xTop                     := 10;
   xWidth                   := 600;
   xHeight                  := 20;

   xMemo.SetBounds(xMargin, xTop, xWidth, xHeight);
   xMemo.Memo.Add('Fest gemauert in der Erden, steht die Form aus Lehm gebrannt ...');

   frReport1.PrepareReport;
   frReport1.ExportTo(TfrTNPDFExportFilter, 'g:\test.pdf');
   frReport1.ShowPreparedReport;

end;     
Die Zeile wird am Bildschirm in "COURIER" angezeigt.
Die TEST.PDF verwendet "ARIAL"

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

Ihr Beispiel arbeitet auch bei mir korrekt! Alle Schriften stimmen.

Habe mal mein Beispiel als ZIP angehängt.

Vielleicht liegt es daran, dass ich nicht den Designer verwende, sondern
den Report manuell erstelle.
Dateianhänge
lr_test.zip
(139.17 KiB) 54-mal heruntergeladen

charlytango
Beiträge: 1084
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: LazReport mit anderer Schriftart

Beitrag von charlytango »

Möglicherweise hilft dir dieses Beispiel von @paweld

In seinem Beispiel wird das Memo (TfrMemoView) nicht direkt erstellt sondern über

Code: Alles auswählen

procedure TlrCodeReport.DrawText(X, Y, W, H: double; Text: string;
  Style: TlrTextRectStyle);
Könnte sein, dass das einen Unterschied macht, denn du erstellst das Memo mit der aktuellen Seite des Reports als Parent, wohingegen das Memo in DrawText der Liste der Objekte des Reports hinzugefügt wird.

Code: Alles auswählen

var
  AText: TfrMemoview;
begin 
......
Report.Pages[ActivePage].Objects.Add(AText);
Ein Versuch ist es sicher wert

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: LazReport mit anderer Schriftart

Beitrag von paweld »

Ich habe Ihr Beispiel gesehen und das Problem besteht tatsächlich. Es sieht so aus, als ob die Schriftart „Courier“ beim Drucken und Exportieren nicht im System gefunden wird (nur bei der Vorschau ist es OK) - bitte melden Sie den Fehler in GitLab: https://gitlab.com/freepascal.org/lazar ... s/-/issues
In Ihrem Fall ist die schnellste Lösung, die Schriftart in „Courier New“ zu ändern :-)
Grüße / Pozdrawiam
paweld

plinius
Beiträge: 8
Registriert: So 30. Jun 2024, 18:47

Re: LazReport mit anderer Schriftart

Beitrag von plinius »

In Ihrem Fall ist die schnellste Lösung, die Schriftart in „Courier New“ zu ändern
Perfekt! Courier New funktioniert.

Den Fehler werde ich melden.

Vielen Dank.

Antworten