fpPDF Fonts Umlaute/Dateigröße

Rund um die LCL und andere Komponenten
xos
Beiträge: 13
Registriert: Mi 26. Dez 2007, 17:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schweiz

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von xos »

Die Option poSubsetFont ruft bei einem Test mit "Arial" zwar den TFontSubsetter (fpTTFSubsetter.pp) auf, aber in WriteTableHeader fliegt das Ganze mit einem Overflow Error beim zusammenrechnen der checksum ab. Der berechnete w Wert geht jeweils in die xxx'xxx'xxx.

Code: Alles auswählen

    w := w or (lByte shl ((3 - (n mod 4))*8));
    if n mod 4 = 3 then begin
      Inc(checksum, w);
      w := 0;
    end;
Ohne Option poSubsetFont wird der "normale" Weg mit dem ganzen Font abgearbeitet und das PDF wird gemacht, aber halt 1.5 MB statt 46 KB wie bei einer Standardschrift.
Braucht es noch weitere Vorbereitungen nach dem Setzen der Option poSubsetFont ?

Benutzeravatar
Winni
Beiträge: 1423
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von Winni »

Hi!

Es gab vor 5 Jahren Probleme mit UTF8-Chars:

https://gitlab.com/freepascal.org/fpc/s ... sues/31092

Versuch doch mal einen Text mit purem 7-Bit-ASCII

Winni

xos
Beiträge: 13
Registriert: Mi 26. Dez 2007, 17:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schweiz

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von xos »

Schon vor 6 Jahren war es ein Thema:
https://lazarus.lazarus.freepascal.nark ... pdf-change

ASCII: müsste ja in etwa so gehen

Code: Alles auswählen

    aShortString:='ABCDEF';
    ActPDFPage.WriteText(x/PDFScale, PageHeight-(y/PDFScale),aShortString);
Aber auch da fliegt die checksum ab.

Benutzeravatar
Lincoln Six Echo
Beiträge: 78
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Ubuntu 64, Lz 2.0.12
CPU-Target: I7 / I9 / Q9650
Wohnort: Hamburg

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von Lincoln Six Echo »

Hi,

habe die gleichen Probleme. Ist egal ob ich meine eigene PDF Engine oder eine andere benutze.

Umlaute und Sonderzeichen werden immer falsch dargestellt.

UTF8Decode etc. funktioniert ebenfalls nicht.

xos
Beiträge: 13
Registriert: Mi 26. Dez 2007, 17:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schweiz

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von xos »

Da es vor ein paar Jahren noch kein funktionierendes PDF-Modul unter Lazarus gab, habe ich dazumal eine eigene PDF-Engin gebaut. Dabei nutzte ich ein bereits gemachtes SVG-Modul, dass wie ein Canvas funktioniert. Bei diesem SVG Modul werden alle Canvas-Funktionen zuerst in einen Speicher geschrieben und erst am Ende wird daraus die SVG Datei erstellt.

Genau gleich läuft es mit dem PDF-Modul. Dabei habe ich ein ANSI Datei geschrieben und konnte so auch die Umlaute nutzen. Und klar, mein SVG wie auch PDF-Modul können nur einfache Texte, Grafiken und Bilder einbinden. Aber ich brauche auch die Embedded-Font Funktion. Als ich sah, dass fpPDF das nun kann, versuchte ich es mit diesem Modul... mit den Problemen die hier behandelt wurden. Das fpPDF-Modul ist leider noch nicht ganz "Wasserdicht".

xos
Beiträge: 13
Registriert: Mi 26. Dez 2007, 17:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schweiz

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von xos »

Habe nun das Ganze mit der aktuellsten Trunk-Version getestet.

- Umlaute gehen nun mit den PDF Standard-Schriften (ging bei der 2.2.2 nicht)
- TTF (Arial) einbinden und Anzeigen der Umlaute geht mit Trunc und ging auch bei 2.2.2
- TTF (Arial) mit Option poSubsetFont geht immer noch nicht. Der Overflow ist immer noch beim Berechnen der Checksum, einfach erst am Ende der Procedure WriteTableHeader

(alles unter Win mit LazWin32)

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von theo »

xos hat geschrieben:
Do 18. Aug 2022, 12:46
- TTF (Arial) mit Option poSubsetFont geht immer noch nicht. Der Overflow ist immer noch beim Berechnen der Checksum, einfach erst am Ende der Procedure WriteTableHeader
Hmm, bei mir geht das. Die Datei ist ca. 30 kB gross.
Lazarus 2.3.0 (rev main-2_3-2366-g4fba69291d) FPC 3.2.2 x86_64-linux-gtk2

Ist das ein Windows oder 32bit Problem?
test.pdf
(30.7 KiB) 28-mal heruntergeladen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: fpPDF Fonts Umlaute/Dateigröße

Beitrag von af0815 »

Wenn der Overflow noch immer da ist, Beispiel dazu und ab in den Bugtracker, falls es den Bugreport noch nicht gibt. Wenn ja Hinweis mit Beispiel, ds es noch immer nicht geht.

Und den Hinweis, das es unter Win32 Probleme gibt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten