Website rendern?

Stuff

Mitglied
Hallo Leute,

folgendens Problem: Ich möchte eine Webseite als Bild auf der Festplatte speichern. Um das zu machen, gibt es sicherlich einige Möglichkeiten, bsp. Screenshot eines Browserfensters mit Robot Klasse oder einbindung eines externen Programms, das diese Aufgabe erledigt.
Bei all diesen Lösungen, muss jedoch ein Browserfenster geöffnet sein und genau das Möchte ich nicht.
Ich will also ein Programm, das den Inhalt einer Seite rendert, aber nicht anzeigt.
Ist dies mit Java überhaupt möglich? Und wenn ja wie?
Rendering-Engines gibts ja open-source, z.B. Gecko (wird auch von Firefox verwendet). Wie ich so etwas allerdings verwende und in ein Java-Programm einbaue weiß ich absolut nicht.

-Gruß und Vielen Dank

PS.: ISt das erste mal das ich hier im Forum schreibe. Ich bin immernoch Java-lerner und lese schon seit einiger Zeit mit, und ihr habt mir bei einigen Fragen super geholfen. Dafür erstmal vielen Dank!!
 
Hallo,

es gibt die Klasse JEditorPane, mit der man html-Texte darstellen kann.
Allerdings kann das Teil kein Java-Script und ist meines Wissens eher rudimentär bzw. von seinen Interpretationsfähigkeiten eher sehr einfach gestrickt. Aber vielleicht reicht es ja für deine Zwecke aus.
Wegen der Imageerzeugung schau dir mal diesen Link an: JPanel zu Image @ tutorials.de: Tutorials, Forum & Hilfe

Wenn dir das JEditorPane nicht reicht, mußt du dich wohl mit einer Rendering-Engine auseinandersetzen und nach Möglichkeiten suchen, diese in Java einzubinden (evtl. gibt es da schon fertige Bibliotheken).

Da du noch Java-lerner bist (wie die meisten von uns auch, den ich behaupte mal, daß das ganze Thema Java inzwischen so groß ist, daß es da immer was Neues zu lernen gibt 😉), empfehle ich dir, erst ein Problem nach dem anderen zu lösen. D. h. zuerst schauen, daß man die html-Darstellung angezeigt bekommt und danach sich den Kopf darüber zu zerbrechen, wie man das praktisch versteckt im Hintergrund ablaufen läßt. Am besten mit kleinen Testpogrammen, die nur einen speziellen Teilaspekt (z. B. Darstellung einer html-Seite) von deinem Hauptprojekt darstellen.

MfG
hansmueller
 
Jo, Danke erstmal für deine Antwort. Die JEditorPaner kenne ich bereits, und sie reicht leider nicht, JavaScript und am besten Flash sollten schon darstellbar sein.
Ich denke es wird darauf hinauslaufen, eine Render-Engine einzubinden. Ich bin zwar kein blutiger Anfänger mehr, aber ausser mit Java und ein bischen Html, hab ich mich nie intensiv mit anderen Programmiersprachen beschäftigt (OK noch mit Haskell aber das bringt mir hier nichts).
Leider weiß ich überhaupt nicht wie ich an dieses Problem, also das einbinden einer Render-Engine, rangehen soll. Das ist absolutes Neuland für mich. Aber auf jeden Fall weiß ich schonmal das dies der Weg ist.

Danke noch für die Tips mit dem Zerlegen in einzelne kleine Probleme. Die wichtigse aufgabe ist erstmal das Einbinden der Engine.

Danke und Gruß!
 
HtmlUnit rendert aber auch nicht.

Wieso speicherst du nicht einfach die HTML-Dateien usw ab? Dann kann der Nutzer die Seite rendern lassen mit was er will.
 
Kommt drauf an was man untern rendern versteht 🙂 Audio kann man auch rendern, aber nicht sehen 🙂

Nach wie vor ist unklar wieso man eine Seite rendern, aber nicht anzeigen will... (weder jetzt noch später).
 
Ja Sorry Leute, konnte mch ein paar Tage nicht melden. Ich möchte mehrere Websites in einer Schleife als Bild speichern. Damit man nebenher etwa anderes am gleichen PC machen kann muss der Bildschirm "frei bleiben". Deshalb kann die gerenderte Webseite nicht angezeigt und per Screenshot-capture fotografiert werden.
Ich habe noch ein bischen Google befragt und es gibt solche Programme z.B. html2jpg macht genau das. Man kann es mit der gewünschten URL als Parameter aufrufen. Das Programm läuft dann und erzeugt den Output ohne die Seite anzuzeigen (Das programm hat auch eine GUI, in der die Seite angezeigt und sogar bedient werden kann).
Im grunde genommen will ich genau so etwas, allerdings möchte ich das selbst bauen um meine Programmierkenntnisse weiter zu schulen und um weitere Funktionen einzubauen. Habt ihr eine idee wie man so ein Programm "nachbauen" könnte.

-Danke
 
Zuletzt bearbeitet:
Am einfachsten indem du einen fertigen Browser irgendwie einbindest, für gecko gibts wohl ein Javabinding. Ansonsten müsste man selbst die Seite rendern. Aber da ja sogar die großen Browser damit Probleme haben wirst du das mit 100% Sicherheit nicht schaffen.
Also am Einfachsten auf etwas fertiges und natives zurückgreifen. (Oder halt nicht als Bild speichern, sondern die HTML-Dokumente/Bilder/... einzeln).
 
Kann das nicht vielleicht sogar ein Plugin für Gecko/Firefox schaffen? Ich hab da nur begrenzte Erfahrungen, aber eigentlich ist das doch nicht viel anders, als die Webseite zu "drucken". Evtl. lässt es sich direkt aus der Funktion rausfummeln.
 

Zurück
Oben