Dieter P.: Druckausgabe einer html-Datei erzeugen

Hallo zusammen!

Ich habe mir ein kleines DB-Abfrage-Tool mit PHP gebastelt. So weit nichts spektkuläres 8trotzdem danke für den Applaus ;) ).

Aber... wie bekomme ich jetzt eine schicke Druckausgabe hin, die mir die Abfrageergebnisse passend für die DIN A4 Seiten aufbereitet, und einen passenden header und dooter, den ich selbst bestimmen kann an jeden Seitenanfang und Seitenende pflanzt?

Gibt's da irgenein fertiges PHP-sckript, oder eine ordentliche Methode für??

Danke
Dieter

(wat sollen eigentlich die Krönchen und der Karnevalsschmuck - ist das jetzt das Selfforum Royal deluxe ?)

  1. Hi,

    Ich habe mir ein kleines DB-Abfrage-Tool mit PHP gebastelt. So weit nichts spektkuläres 8trotzdem danke für den Applaus ;) ).

    *klatsch* *klatsch* *klatsch* :-)

    Gibt's da irgenein fertiges PHP-sckript, oder eine ordentliche Methode für??

    Erwarte nicht für jeden Anwendungsfall eine speziell dafür angefertigte Methode.

    PHP erzeugt letzten Endes auch nur HTML (oder Text, oder Grafik usw., Du möchtest aber vermutlich mit HTML arbeiten). Überlege Dir, wie die HTML-Seite aussehen muss, die Du als Druckversion bezeichnen würdest - und erzeuge sie anschließend mit PHP. That's it. Nichts magisches. Nur hochindividuell.

    Cheatah

    1. Erwarte nicht für jeden Anwendungsfall eine speziell dafür angefertigte Methode.

      Ich will aba *stampfmitdemfußauf*

      PHP erzeugt letzten Endes auch nur HTML (oder Text, oder Grafik usw., Du möchtest aber vermutlich mit HTML arbeiten). Überlege Dir, wie die HTML-Seite aussehen muss, die Du als Druckversion bezeichnen würdest - und erzeuge sie anschließend mit PHP. That's it. Nichts magisches. Nur hochindividuell.

      Ich dachte nur da gäbe es was, weil man auf vielen Seiten dieses Icon "Als version zum Drucken" sieht. Was ist so anders an solchen Druckversionen. Wie weiß den PHP wo "abgeschnitten" werden soll, damit das ganze auf DIN A4 passt ???

      Dieter

      1. Hi,

        Erwarte nicht für jeden Anwendungsfall eine speziell dafür angefertigte Methode.
        Ich will aba *stampfmitdemfußauf*

        dann schreib eine ;-)

        Bedenke dabei, dass eine nicht-Druck-Version keinerlei Rückschlüsse auf die Druck-Version zulässt. Es existiert kein Weg zu ermitteln, was Du als druckbar ansiehst, welche Informationen nicht gedruckt werden sollen (z.B. Werbung, Links etc.), und welche _nur_ in der Druckversion stehen sollen (z.B. Hinweise auf die Herkunft). Druck- und nicht-Druck-Version sind zwei vollkommen unterschiedliche Seiten, die vielleicht für den Menschen einen gewissen Zusammenhang ergeben; eine Maschine kann jedoch keinesfalls von der einen Variante auf die andere schließen.

        Ich dachte nur da gäbe es was, weil man auf vielen Seiten dieses Icon "Als version zum Drucken" sieht.

        Das ist ein Service, der mit Aufwand verbunden ist. Je nach Art der Seitengenerierung kann man vielleicht - evtl. im Zusammenhang mit einem Content-Management-System - eine einfache Art der Generierung herstellen; aber PHP als solches kann das niemals nie nie nicht, weil die Problematik mit der Sprache an sich nicht das geringste zu tun hat.

        Was ist so anders an solchen Druckversionen.

        Alles - selbst der Inhalt, der nämlich ggf. anders umgebrochen werden muss.

        Wie weiß den PHP wo "abgeschnitten" werden soll, damit das ganze auf DIN A4 passt ???

        Das weiß PHP nicht, und es würde eine serverseitige Sprache auch nicht interessieren. Der Client weiß das.

        Cheatah

  2. Hallo Dieter,

    ... mir die Abfrageergebnisse passend für die DIN A4 Seiten aufbereitet und einen passenden header und dooter, den ich selbst bestimmen kann an jeden Seitenanfang und Seitenende pflanzt?

    Eine schnelle, unkomplizierte Lösung gibt es hierfür nicht. Diese Features sind ja in CSS 2 angedacht, werden nur derzeit von aktuellen Browsern nicht umgesetzt.

    Für einen Kunden wählten wir folgende Lösung:
    Zu PHP hinzu installierten wir eine PDF-Bibliothek:

    Zunächst wird wie gewohnt über PHP der HTML Content erzeugt. Diesen konvertieren wir anschließend zu PDF. Die PDF-Bibliothek bietet uns Schnittstellen für Seiteneinrichtung und Offset. Zusätzlich können noch Ressourcen plaziert werden, die in der HTML-Ausgabe nicht zu sehen sind, um z.B. einen vollständigen Briefkopf zu erzeugen.

    So bekommen wir die Seiteneinrichtung gut in den Griff und erhalten zusätzlich eine PostScript-Datei zur Archivierung/Weiterleitung.

    Vielleicht ist dies ja auch eine Lösung für Dich?

    Interessante PDF Bibliotheken, mit denen das realisiert werden kann: Thomas Merz pdflib und ClibPDF von FastIO, für deren kommerzielle Verwendung eine Lizenz erforderlich ist.

    Für weitere Fragen stehe ich Dir gerne zur Verfügung.

    Schöne Grüße
    Thorsten Strausbach (Agentur 4e)

    1. Hallo Dieter,

      Eine schnelle, unkomplizierte Lösung gibt es hierfür nicht. Diese Features sind ja in CSS 2 angedacht, werden nur derzeit von aktuellen Browsern nicht umgesetzt.

      Für einen Kunden wählten wir folgende Lösung:
      Zu PHP hinzu installierten wir eine PDF-Bibliothek:

      Zunächst wird wie gewohnt über PHP der HTML Content erzeugt. Diesen konvertieren wir anschließend zu PDF. Die PDF-Bibliothek bietet uns Schnittstellen für Seiteneinrichtung und Offset. Zusätzlich können noch Ressourcen plaziert werden, die in der HTML-Ausgabe nicht zu sehen sind, um z.B. einen vollständigen Briefkopf zu erzeugen.

      So bekommen wir die Seiteneinrichtung gut in den Griff und erhalten zusätzlich eine PostScript-Datei zur Archivierung/Weiterleitung.

      Vielleicht ist dies ja auch eine Lösung für Dich?

      Interessante PDF Bibliotheken, mit denen das realisiert werden kann: Thomas Merz pdflib und ClibPDF von FastIO, für deren kommerzielle Verwendung eine Lizenz erforderlich ist.

      Für weitere Fragen stehe ich Dir gerne zur Verfügung.

      Schöne Grüße
      Thorsten Strausbach (Agentur 4e)

      Ja Danke!

      Das ist genau was ich wissen wollte, und klingt sogar noch besser! Das habe ich ja auch ein "digitales Print" gleich mit.

      mein Problem ist, das ich mich mit Dieser installiererei unter Linux nicht so auskenne. Ich habe meinen Server mit einer standard (SuSE) Installation aufgesetzt und nur einnige parameter geändert, danach lief es einwandfrei. Was muß ich denn genau tun um so eine Bilbiothek zu installieren und dann damit zu arbeiten? Kann ich das alles über den putty bewerkstelligen ?

      Viele Fragen, sorry! Aber ich bin in dieser server-einrichtungs-Geschichte noch recht neu und mich hat Deine Idee jetzt sehr interessiert....

      Danke
      Dieter

      1. Das ist genau was ich wissen wollte, und klingt sogar noch besser! Das habe ich ja auch ein "digitales Print" gleich mit.

        mein Problem ist, das ich mich mit Dieser installiererei unter Linux nicht so auskenne. Ich habe meinen Server mit einer standard (SuSE) Installation aufgesetzt und nur einnige parameter geändert, danach lief es einwandfrei.

        Installation der PDFLib:

        Unterverzeichnis (z.B. lamps) erzeugen in
        /usr/local/src
        mit
        mkdir lamps

        Dateien entpacken (nach/usr/local/src/lamps) gunzip und tar.

        in das evtl. vorhandene Unterverzeichnis wechseln
        und dort dann folgendes (laut INSTALL) ausführen:

        ./configure --with-shared-pdflib --enable-cxx
        make
        make test

        Die dritte Zeile erzeugt im Ordner test eine Datei namens pdftest.pdf. Existiert diese, funktioniert alles, die PDFLib kann installiert werden mit:

        make install

        PDFLib ist nun installiert.
        Falls es nicht richtig installiert sein sollte, noch folgende Schritte:

        Alle libraries aus dem o.g. Verzeichnis nach /usr/local/lib kopieren.

        Wahrscheinlich wird auch ein Eintrag in der ld.so.conf-Datei benötigt. Diese öffnen und, falls noch nicht vorhanden, eine Zeile mit /usr/local/lib hinzuzufügen. Anschliessend wird /sbin/ldconfig ausführen.

        Aber ich bin in dieser server-einrichtungs-Geschichte noch recht neu und mich hat Deine Idee jetzt sehr interessiert....

        Super, das freut mich!!

        Schöne Grüße
        Thorsten Strausbach (Agentur 4e)

        1. Ich bin echt beeindruckt - VIELEN DANK für Deine Mühe!

          Werde das am WE mal mit 'ner Kanne Kaffee und viel Ruhe ausprobieren...
          ..aber scheint ja Dank der Anleitung alles machbar zu sein...

          SUPER!

          Gruß
          Dieter

          Das ist genau was ich wissen wollte, und klingt sogar noch besser! Das habe ich ja auch ein "digitales Print" gleich mit.

          mein Problem ist, das ich mich mit Dieser installiererei unter Linux nicht so auskenne. Ich habe meinen Server mit einer standard (SuSE) Installation aufgesetzt und nur einnige parameter geändert, danach lief es einwandfrei.

          Installation der PDFLib:

          Unterverzeichnis (z.B. lamps) erzeugen in
          /usr/local/src
          mit
          mkdir lamps

          Dateien entpacken (nach/usr/local/src/lamps) gunzip und tar.

          in das evtl. vorhandene Unterverzeichnis wechseln
          und dort dann folgendes (laut INSTALL) ausführen:

          ./configure --with-shared-pdflib --enable-cxx
          make
          make test

          Die dritte Zeile erzeugt im Ordner test eine Datei namens pdftest.pdf. Existiert diese, funktioniert alles, die PDFLib kann installiert werden mit:

          make install

          PDFLib ist nun installiert.
          Falls es nicht richtig installiert sein sollte, noch folgende Schritte:

          Alle libraries aus dem o.g. Verzeichnis nach /usr/local/lib kopieren.

          Wahrscheinlich wird auch ein Eintrag in der ld.so.conf-Datei benötigt. Diese öffnen und, falls noch nicht vorhanden, eine Zeile mit /usr/local/lib hinzuzufügen. Anschliessend wird /sbin/ldconfig ausführen.

          Aber ich bin in dieser server-einrichtungs-Geschichte noch recht neu und mich hat Deine Idee jetzt sehr interessiert....

          Super, das freut mich!!

          Schöne Grüße
          Thorsten Strausbach (Agentur 4e)

          1. Ich bin echt beeindruckt - VIELEN DANK für Deine Mühe!
            Werde das am WE mal mit 'ner Kanne Kaffee und viel Ruhe ausprobieren...
            ..aber scheint ja Dank der Anleitung alles machbar zu sein...

            Ich denke auch. Du machst das schon - viel Erfolg!

            Thorsten Strausbach (Agentur 4e)

  3. Hallo Dieter,

    Aber... wie bekomme ich jetzt eine schicke Druckausgabe hin, die mir die Abfrageergebnisse passend für die DIN A4 Seiten aufbereitet, und einen passenden header und dooter, den ich selbst bestimmen kann an jeden Seitenanfang und Seitenende pflanzt?

    eine Möglichkeit dafür wäre theoretisch ein spezielles Print-Styleshet.
    Dabei bist Du allerdings auf Gedeih und Verderb eventuellen Eigenmächtigkeiten des Browsers ausgeliefert.
    Wenn Du eine exaktere Lösung suchst, würde ich PDF als Ausgabeformat vorziehen,
    dafür gibt es auch vorgefertigte Funktionen in PHP,
    siehe http://www.php.net/manual/de/ref.pdf.php.

    Und wenn es eine universelle Lösung sein soll, nimm XML und XSL-FO;
    das wird allerdings auf einem Server ohne Java-Unterstützung wohl eher schwierig,
    vor allen Dingen, wenn man das Ganze dann Richtung Cocoon (http://xml.apache.org/cocoon/) weiterspinnt.
    Ist also dann eher sinnvoll für ein (größeres) Intranet...

    Schönen Gruß

    Rainer