thz: HTML als RGBA-Bild rendern

Hallo zusammen,

ich benötige für ein Programm eine komplexere, dynamisch änderbare Textdarstellung. HTML (möglicherweise in Verbindung mit CSS) würde sich meiner Meinung nach im Konkreten Fall als Beschreibungssprache ideal eignen.

Da die Textdarstellungen in weiteren Schritten weiterverarbeitet werden müssen benötige ich sie im RGBA-Format, wobei der Hintergrund in der Regel vollkommen durchsichtig ist. Die erzeugten Grafiken sollten dabei möglichst ohne ein Zwischenspeichern auf irgendeinem Speichermedium an mein (zu schreibendes) Programm übergeben werden - d. h. die Aktion sollte ausschließlich im RAM stattfinden. Daher wäre es gut, wenn ich die Render-Instanz per DLL / Shared Object (bevorzugt) oder als Quelltext in das Programm einbinden könnte.

Durch eine dynamische Rückgabe, wie es zum Beispiel von der libvlc (per Callback-Funktion) ermöglicht wird, könnten zudem dynamische HTML-Elemente dargestellt werden. Dies ist in meinem Projekt jedoch nicht notwendig.

Von der verwendeten Programmiersprache her bin ich bisher völlig offen, solange sie objektorientiert ist. Das ganze muss jedoch unter Linux lauffähig sein und sollte möglich ohne oder mit geringem Aufwand auf andere Betriebssysteme portierbar sein. Daher würde sich für mein Projekt zum Beispiel die Lazarus IDE (Pascal), Java oder Python anbieten - wobei ersteres aufgrund der Binärform bei der Weiterverarbeitung Geschwindigkeits-Vorteile aufweist (wobei dies auch durch die Nutzung anderer binärer Bibliotheken oder die Einbindung von eigenen DLLs / SOs umgangen werden kann).

Leider habe ich bisher noch keine Bibliothek gefunden, die derartiges ermöglicht. Ich habe auch noch keine Informationen darüber gefunden, wie sich eine Engine wie Gecko oder KHTML / WebKit / Blink (Trident / EdgeHTML fällt raus, da Windows-Only) für diesen Zweck nutzen könnte. Alle Wege, die ich bisher finden konnte bieten entweder kein RGBA, benötigen .NET (was unter Linux über mono nur bedingt unterstützt wird), nutzen den Internet-Explorer oder erfordern gar ein offenes Browser-Fenster bzw. sichtbares GUI-Element innerhalb der Anwendung.

Daher hoffe ich, dass mir jemand einen Tipp oder Anregungen geben kann, wie und mit welchen Mittel so etwas umsetzbar ist.

Vielen Dank im Voraus.

  1. Ich habe auch noch keine Informationen darüber gefunden, wie sich eine Engine wie Gecko oder KHTML / WebKit / Blink (Trident / EdgeHTML fällt raus, da Windows-Only) für diesen Zweck nutzen könnte.

    Die Engines sind opensource und haben in der Regel Einsteiger-Tutorials, Contributor-Guides und jede Menge Dokumentation. Das könnten einige Anlaufstellen sein, allerdings ist die direkte Arbeit mit den Bibliotheken auch mit entsprechenden Aufwand zur Einarbeitung verbunden. Einfacher dürfte es sein, wenn du einen sogenannten Headless-Browser verwendest. Ein paar, die mir einfallen, sind:

    1. Vielen Dank.

      Die ersten drei Varianten scheinen auf den ersten Blick nicht meine Anforderungen zu erfüllen. wkhtmltopdf oder besser gesagt wkhtmltoimage könnte jedoch eine mögliche Lösung sein. Das Kommandozeilen-Programm tut jedenfalls schon einmal genau das was ich benötige. Wenn nun auch noch die c-Bindings (vermutlich übersetzte ich sie mit H2Pas nach Pascal) alles liefern, was ich benötige, dann wären meine Anforderungen zu 100% erfüllt. Da muss ich mich nun jedoch erst mal einlesen.