Voodoo43: HTML-Dokument druckaufbereiten

Hallo zusammen. Vorweg schonmal: Ich habe im Bereich HTML / Webprogrammierung o.ä. noch nahezu keine Ahnung. Trotzdem muss ich mich für ein Projekt damit auseinander setzen. Dazu schonmal vorab eine Frage: Ist es möglich mithilfe einer Renderengine (z.B. gecko) ein erstelltes HTML-Dokument zu rendern und direkt zum Systemdrucker zu schicken ohne es am Bildschirm anzuzeigen? Renderengine ist kein muss, wenn es andere Möglichkeiten gibt bin ich für jeden Tip dankbar.

Gruß Voodoo43

  1. So richtig habe ich jetzt nicht noch verstanden, was Du machen willst. Geht es um eine spezielle Version für den Ausdruck? Dann kannst Du medienspezifisch CSS-Attribute vergeben.

    Beispielsweise wird hier die Schrift für die Druckausgabe von sans-serif auf serif umgestellt und eine Klasse noprint erzeugt.

    html {font-family: sans-serif;}
    
    @media print {
    	.noprint {
    		display: none;				
    	}
    	html {font-family: serif;}
    
    }
    

    Dann kannst Du alles, was Du nicht ausdrucken willst mit class="noprint" aus der Druck-Ausgabe entfernen.

    Beispiel:

    <td valign=top class="noprint" >
    

    für eine Tabellen-Zelle

    und

    <p class="noprint" > .... </p>
    

    für einen Abschnitt. Der Benutzer muss dann nur noch die Druckfunktion des Browsers aktivieren.

    Wenn Du eine speziell aufbereitete Druck-Seite erstellst, musst Du die zuerst an den Browser schicken, idealerweise in ein Popup-Fenster. Dort kannst Du dann die Druckfunktion mit Javascript direkt aufrufen (am einfachsten am Ende der Seite):

    <script type="text/javascript" >
         window.print();
    </script>
    

    Aber ohne Anzeige geht es m.E. nicht. Versuchen könnten man die Kombination in CSS:

    html {visible: false;}
    @media print {
       html {visible: true;}
    }
    

    und dann wie oben beschrieben mit JavaScript ausdrucken.

    Geholfen?

    Viele Grüße

    Wilfried

    1. Hallo wisch,

      <td valign=top class="noprint" >
      

      Einzelne Tabellenzellen auszublenden halte ich nicht für klug. Aber der Grund für die Markierung als schlechtes Beispiel ist die Verwendung von valign. Dieses Attribut ist obsolet und soll nicht mehr verwendet werden. Außerdem sollte man sich für eine Schreibweise entscheiden. Ich empfehle, die Attributwerte in Anführungszeichen einzuschließen.

      Wenn Du eine speziell aufbereitete Druck-Seite erstellst, musst Du die zuerst an den Browser schicken, idealerweise in ein Popup-Fenster. Dort kannst Du dann die Druckfunktion mit Javascript direkt aufrufen (am einfachsten am Ende der Seite):

      Auch das halte ich nicht für klug. Weder popup noch speziell aufbereitet. Der von dir vorgeschlagene CSS-Weg ist schon grundsätzlich richtig.

      <script type="text/javascript" >
           window.print();
      </script>
      

      type="text/javascript" ist nicht mehr notwendig.

      Aber ohne Anzeige geht es m.E. nicht. Versuchen könnten man die Kombination in CSS:

      Weil Drucker mMn. kein HTML verstehen.

      html {visible: false;}
      @media print {
         html {visible: true;}
      }
      

      Es geht ja nicht darum, im Browser nichts anzuzeigen, sondern den Browser nicht zu benötigen.

      Die Eigenschaft heißt visibility und die möglichen Attribute visible bzw. hidden.

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
      1. Stimmt leider in jeder Hinsicht, und ich bitte um Entschuldigung.

        Aber die Script-Sprache würde ich trotzdem stehen lassen, auch wenn sie zur Zeit nicht mehr notwendig ist. Das war ein schönes Feature für die Optik.

        Wenn der Browser ganz außen vor bleiben soll, würde ich nach der Laufzeitumgebung fragen. Java? PHP? C++? .NET?

        Viele Grüße

        Wilfried

        1. Hallo wisch,

          Aber die Script-Sprache würde ich trotzdem stehen lassen, auch wenn sie zur Zeit nicht mehr notwendig ist. Das war ein schönes Feature für die Optik.

          Die Angabe ist notwendig, wenn es sich nicht um JavaScript resp. CSS handelt.

          Bis demnächst
          Matthias

          --
          Rosen sind rot.