iphtml zu PDF

Für Fragen von Einsteigern und Programmieranfängern...
hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

iphtml zu PDF

Beitrag von hbr »

Hallo,
gibt es eine Möglichkeit (Unit, Package) Inhalt IpHtml-Panel eine PDF-Datei zu erzeugen?

Für Info wäre ich Dankbar.

Gruß

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

Re: iphtml zu PDF

Beitrag von theo »

HTML kann man auch ohne GUI in PDF umwandeln.
z.B. https://wkhtmltopdf.org/

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: iphtml zu PDF

Beitrag von hbr »

Danke, aber verstehe ich nicht so ganz.
So wie es aussieht, wird die Übersetzung Online gemacht.
Leider steht kein Netz zur Verfügung.
Ich brauche eine Offline Variante aus LZ heraus.

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

Re: iphtml zu PDF

Beitrag von theo »

hbr hat geschrieben: Do 29. Dez 2022, 20:18 So wie es aussieht, wird die Übersetzung Online gemacht.
Wie kommst du denn da drauf?

Code: Alles auswählen

wkhtmltopdf ./test.html ./test.pdf

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: iphtml zu PDF

Beitrag von hbr »

Sag ich doch, ich verstehe es nicht.
Wie bindet man das ein? Auf git ist das in C und nicht in Delphi.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6770
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: iphtml zu PDF

Beitrag von af0815 »

Man bindet das nicht ein, man benutzt es. Es ist eine eigene (Kommandozeilen-)Applikation. Du wirst für Pascal nichts ähnliches finden.

So gesehen muss man auf deine erste Frage antworten:
NEIN es ist nichts bekannt, wie man eine direkte Umwandlung machen kann in Pascal, schon gar keine Unit oder Komponenten.


Es geht nur mit einem Workaround über ein externes Programm, so wie es Theo gezeigt hat. Ein erster Punkt zum Nachlesen ist hier https://wiki.freepascal.org/Executing_E ... rograms/de (Die Englische Version ist besser). Die Frage ist nur, auf welcher Plattform brauchst du das, weil das von Theo sieht sehr nach Linux Version aus. Edit: Es gibt scheinbar auch Versionen für Windows.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: iphtml zu PDF

Beitrag von theo »

Das gibt es doch für viele Systeme https://wkhtmltopdf.org/downloads.html

Bei OpenSUSE auch schon im Repo dabei.

Wenn man lustig ist, kann man auch mit h2pas den pdf.h übersetzen und dann die DLL direkt ansprechen.

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: iphtml zu PDF

Beitrag von hbr »

Danke mag ja sein das man das umbauen kann, ich nicht!
Deswegen war meine Uhrsprungs Frage ja auch ob es da eine Unit für Lazarus gibt.

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: iphtml zu PDF

Beitrag von hbr »

Danke, @af0815
Das ist doch eine Ansage wo mit man leben kann.
Ist nur zu hoffen, dass es irgendwann ein Package für Lazarus geben wird.

Gruß

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: iphtml zu PDF

Beitrag von Jorg3000 »

Moin!
Ich habe letztes Jahr eine Unit gemacht, in der wkhtmltopdf als DLL (Windows) bei Bedarf dynamisch geladen wird.
Es funktionierte scheinbar und ich war zunächst sehr glücklich - bis ich ein HTML mit einem Bild (img-Tag) an die DLL übergeben habe.

Egal ob das Bild lokal vorlag oder im Web, egal welches Protokoll (file: oder https: oder relativ ohne Protokoll-Angabe) oder sogar mittels img-Data, die DLL stürzte immer ab, ich glaube mit "Fließkomma-Division durch 0".
Ich habe gefühlt Tage damit verbracht eine Lösung zu finden, aber erfolglos.

Die letzte wkhtmltopdf-Version ist von Mitte 2020 und scheint nicht weiter gepflegt zu werden.
Falls jemand die DLL eingebunden hat und keine Probleme mit img hat, bitte melden.
Grüße, Jörg

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

Re: iphtml zu PDF

Beitrag von theo »

Jorg3000 hat geschrieben: Fr 30. Dez 2022, 05:48 Falls jemand die DLL eingebunden hat und keine Probleme mit img hat, bitte melden.
Nur eine Idee: Hast du mal so probiert?

Code: Alles auswählen

uses Math;
//...
begin
  SetExceptionMask(GetExceptionMask + [exOverflow,exZeroDivide,exInvalidOp]);
Hast du die Header Übersetzung (und ein Beispielprog.) noch?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: iphtml zu PDF

Beitrag von m.fuchs »

theo hat geschrieben: Fr 30. Dez 2022, 09:36 Nur eine Idee: Hast du mal so probiert?

Code: Alles auswählen

uses Math;
//...
begin
  SetExceptionMask(GetExceptionMask + [exOverflow,exZeroDivide,exInvalidOp]);
Das ist leider ein beliebtes Problem bei C-Libs. Irgendwie sind dort einige Entwickler der Meinung eine Division durch 0 muss nicht verhindert werden - man deaktiviert dann lieber die entsprechende Exception. Ist mir auch gerade untergekommen bei einer Lib.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: iphtml zu PDF

Beitrag von Jorg3000 »

theo hat geschrieben: Fr 30. Dez 2022, 09:36Hast du die Header Übersetzung (und ein Beispielprog.) noch?
Ja, muss ich aber aus meinen alten Units rauskopieren und nochmal testen.
Komme zeitlich erst morgen dazu.

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: iphtml zu PDF

Beitrag von Jorg3000 »

Hi!
Hier nun mein Beispiel-Projekt zur wkHtmlToPDF DLL für Windows (ich hab's nur mit 64 Bit getestet).

Die benötigte Datei "wkhtmltox.dll" muss man sich von https://wkhtmltopdf.org/downloads.html runterladen und in den Ordner des Beispiel-Projekts kopieren.

Mittels Button1 wird eine mitgelieferte HTML-Datei ohne ein enthaltenes Bild genommen und als PDF gespeichert. Funktioniert!
Bei Button2 das Gleiche, aber mit einem img-Tag im HTML. Das nippelt ab.

Bin gespannt, ob ich einfach nur ein Brett vorm Kopp habe - und würde mich freuen, wenn es nur eine Kleinigkeit wäre, es doch noch mit Bildern zum Laufen zu bringen.
Grüße, Jörg
Dateianhänge
laz-wkHtmlToX.zip
(177.25 KiB) 63-mal heruntergeladen

PascalDragon
Beiträge: 954
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: iphtml zu PDF

Beitrag von PascalDragon »

m.fuchs hat geschrieben: Fr 30. Dez 2022, 09:47
theo hat geschrieben: Fr 30. Dez 2022, 09:36 Nur eine Idee: Hast du mal so probiert?

Code: Alles auswählen

uses Math;
//...
begin
  SetExceptionMask(GetExceptionMask + [exOverflow,exZeroDivide,exInvalidOp]);
Das ist leider ein beliebtes Problem bei C-Libs. Irgendwie sind dort einige Entwickler der Meinung eine Division durch 0 muss nicht verhindert werden - man deaktiviert dann lieber die entsprechende Exception. Ist mir auch gerade untergekommen bei einer Lib.
Das liegt aber auch daran, dass es kein gezieltes Konzept zur Ausnahmebehandlung in C gibt. In POSIX gibt es Signale und in Windows gibt es SEH, aber es gibt nichts standardisiertes. Und wenn man Signale in einer Bibliothek behandelt, dann muss man auch aufpassen, damit man nicht eventuell der Anwendung die Signalbehandlung abknappst. Deswegen schalten C Bibliotheken dies ab (bzw. gar nicht erst ein) während (Object) Pascal da ein standardisiertes Konzept dafür hat.
FPC Compiler Entwickler

Antworten