Springe zum Hauptinhalt Profilbild Hartmut Goebel

Hartmut Goebel

Diplom-Informatiker, CISSP, CSSLP, ISO 27001 Lead Implementer



Anfrage
Logo Goebel Consult

Neues aus meiner Toolbox: Webseiten "wie sie sind" als PDF speichern

Alle, die einen "Screenshot" der Webseite als PDF machen wollen, können das brauchen.

Alle, die einen "Screenshot" der Webseite als PDF machen wollen, können das brauchen.

Wer schon einmal versucht hat, Webseiten als PDF zu speichern -- und zwar so, wie sie am Bildschirm erscheinen --, kennt das Problem: es geht nicht. Entweder kann der Browser gar kein PDF erzeugen, oder man kann nur "als PDF drucken". Beim Drucken bekommt man aber die Druck-Ansicht, und nicht das, was am Bildschirm steht (zum Hintergrund unten mehr).

Meine Software erzeugt ein PDF, das den Bildschirminhalt wiedergibt (so wie links zu sehen).

Screenshot einer Webseite

Gleiche Webseite ausgedruckt

So sieht die Webseite am Bildschirm aus

Und so der Ausdruck

Das kann die Software:

Erzeugt ein PDF einer beliebigen, öffentlichen Webseite

Das PDF ist durchsuchbar, enthält also noch den "Text" (und nicht nur ein Bild vom Text)

Fast alle Webseiten lassen sich gut darstellen, denn als Render Engine wird die gleicher verwendet, die auch in Safari steckt (Webkit)

Die Webseite wird automatisch auf die Seitenbreite skaliert

wenn die Webseite zu lang für ein Blatt ist, werden mehrere Seiten erzeugt

Seitenformat, -ränder und -orientierung können angegeben werden

Firefox-Addon: 1 Klick und das PDF wird geliefert

In zwei Varianten nutzbar:
  • kleiner HTTP-Server, der die Umwandlung übernimmt (den verwendet das Addon)

  • Kommandozeilen-Tool

kann leicht an die Bedürfnisse der Kunden angepasst werden, beispielsweise

  • andere Seitenaufteilungen, andere Dateiformate

  • Integration in komplexere Tools (siehe Successtory unten)

Die Software ist plattformunabhängig (Linux, Windows, Mac), benutzt Qt und Python.

Vergleich mit Alternativen

Alternative 1: Für Firefox (und wohl auch andere Browser) gibt es Add-ons, die die komplette Seite in ein Bild packen. Sie greifen dabei auf der "Bild" zurück, das der Browser intern von der Seite erstellt hat. Vorteil: es wird das ausgegeben, was momentan im Browser angezeigt wird, also auch private Seiten.

Nachteile diese Alternative

  1. Ein Bild lässt sich schlecht auf mehrere Blätter aufteilen,

b) man bekommt ein Bild, also eine Ansammlung von Bildpunkten. Das Bildschirmfoto ist nicht durchsuchbar.

  1. Je nach Addon muss man viel klicken

Alternative 2: "Drucken als PDF" scheidet aus, da die Druckansicht gewählt wird.

Alternative 3: Bestehende Online-Dienste, davon gibt es einige, ein paar habe ich ausprobiert, die haben nicht überzeugt. Teilweise nicht zuverlässig erreichbar, teilweise muss man zu oft klicken. Oft ist das Papierformat fest auf "Letter" eingestellt. Das druckt sich gar nicht gut auf A4. Und man muss Dritten vertrauen (ggf. Auftragsdatenverarbeitung, BDSG ist zu beachten).

Successtory ;-)

Mein Kunde setzt das Tool seit einem halben Jahre bei der Medienbeobachtung ein, auf zwei Arten:

  1. Findet ein Mitarbeiter eine interessante Webseite im Netz, wird diese mit einem Klick als PDF gespeichert.

  2. Ein Ausschnittdienste schickt interessante Links per Mail. Diese Mail werden automatisch ausgewertet und die PDFs an die Mitarbeiter geschickt -- zusammen mit einem Vorschaubild und den Infos aus der Mail. (Das Ganze ist eine Erweiterung des Kommandozeilen-Tools.)

  3. [Nachtrag] Die Mail-Schnittstelle kann inzwischen auch Mails auswerten, die nur Links enthalten. Die nötigen Meta-Informationen (für welchen Kunden, etc.) werden dem Betreff entnommen. Letzterer muss dafür natürlich einem bestimmten Format entsprechen.

Hintergrund

Das Phänomen kennt Ihr: Ihr wollt eine Webseite ausdrucken, und das Ergebnis sieht völlig anders aus, als das am Bildschirm. Diese Mail erklärt, weshalb das so ist und zeigt, was man dagegen tun kann, ohne fünf Bildschirmphotos zusammenkleben zu müssen.  Und sie zeigt eine Lösung als PDF, das man dann durchsuchen kann?

Die Ursache ist: Für den Ausdruck verwendet der Browser eine eigene "Formatvorlage" (ein sogenanntes Cascading Style Sheet, CSS). Idee Idee dahinter ist: Wer die Siete ausdruckt, will keine Navigation, keine Werbung, etc. Also werden solche Elemente in der Formatvorlage für den Ausdruck auf "nicht anzeigen" gestellt.

Dabei ist es egal, ob Ihr auf einen physikalischen Drucker druckt, oder mit FreePDF, PDF Creator oder ähnlichem ein PDF erzeugt. Für den Browser ist das alles "drucken", als verwendet er die Formarvorlage für "Drucken".

Früher hatten Webseiten dafür eine Link "Druckansicht". Der ist heute ziemlich ausgestorben, weil die Browser die Formatvorlagen für den Ausdruck verwenden, und da sich Content Management Systeme verbereitet haben, die solche Vorlagen schon mitbringen.

Wer dennoch ein "Bild" der Webseite haben möchte, muss ein Bildschirmphoto machen. Mit den Bordmitteln der Betriebssysteme bekommt man damit aber immer nur einen Teil der der Seite auf ein Bild -- soviel der Browser halt auf einem Bildschirm anzeigen kann. Blöd, wenn der Inhalt der Seite über drei Bildschirme geht.

Interesse?

Wenn Sie das Produkt für Ihren eigenen Bedarfs nutzen wollen, mache ich Ihnen gerne ein Angebot. Setzen Sie sich dazu bitte mit mir in Verbindung.