Erri: Druckversion seperat anzeigen lassen

Hallo,

ich bin gerade dabei meine Website mit einer Druckversion mittels CSS auszustatten.

Ich habe in meiner print.css folgenden Eintrag...

td.noprint
{
         display: none;
}

...vorgenommen und jede Spalte, die NICHT GEDRUCKT WERDEN SOLL mit...

class="noprint"

...ausgestattet und natürlich meine beiden CSS-Dateien (screen & print) eingebunden. Nun möchte ich über einen Link <a href="http://www.homepage.de/index.html>Druckversion</a>
die Druckversion in einer neuen Seite öffnen.

Kann mir jemand helfen, wie ich hier vorgehen muss?

Gruß und Danke
Erri

  1. Nun möchte ich über einen Link <a href="http://www.homepage.de/index.html>Druckversion</a>
    die Druckversion in einer neuen Seite öffnen.

    Dies habe ich bereits probiert, leider funktioniert es nicht:

    <a href="<?=$PHP_SELF?>?printversion=1" target="blank">Druckversion</a>

    Gruß Erri

    1. Hallo,

      <a href="<?=$PHP_SELF?>?printversion=1" target="blank">Druckversion</a>

      Erstens solltest Du mal sicher sein, dass PHP ueberhaupt
      funktioniert in dieser Datei.

      Zweitens kann es daran scheitern, dass die Kurzschreibweise
      <? ?> nicht funktioniert.
      Drittens gibt es $PHP_SELF nur bei register_globals="off".
      Versuch's wenn schon mit:
      <?php echo $_SERVER['PHP_SELF']; ?>

      Viertens musst Du natuerlich eine entsprechende
      Unterscheidung (IF/ELSE oder SWITCH/CASE) im
      Skript haben, die je nach Parameter verschiedene
      LINK-Elemente in den HTML-Quellcode schreibt.

      Gruesse,

      Thomas

      --
      Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
      Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
      Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
      1. Hi,

        Erstens solltest Du mal sicher sein, dass PHP ueberhaupt
        funktioniert in dieser Datei.

        Da bin ich mir 100%ig sicher.

        Zweitens kann es daran scheitern, dass die Kurzschreibweise
        <? ?> nicht funktioniert.

        Bei anderen PHP-Aufrufen in der selben Datei funktionierts auch.

        Drittens gibt es $PHP_SELF nur bei register_globals="off".

        $PHP_SELF funktioniert sicher... sehe ich im Browser, ob als Link die aktuelle Datei oder eben "$PHP_SELF" angezeigt wird. (register_globals hatte ich auch gesetzt)

        Viertens musst Du natuerlich eine entsprechende
        Unterscheidung (IF/ELSE oder SWITCH/CASE) im
        Skript haben, die je nach Parameter verschiedene
        LINK-Elemente in den HTML-Quellcode schreibt.

        Mmh, hier wird wohl mein Fehler liegen. Mal sehen, ob ichs noch hinbekomme.
        So, wie ich gelesen habe (auf http://www.css-praxis.de/tipps.html), muss es doch so (mit "?printversion=1") funktionieren, oder?

        Gruß Erri

        1. Moin!

          Mmh, hier wird wohl mein Fehler liegen. Mal sehen, ob ichs noch hinbekomme.
          So, wie ich gelesen habe (auf http://www.css-praxis.de/tipps.html), muss es doch so (mit "?printversion=1") funktionieren, oder?

          Ja, aber nur, wenn serverseitig ein Skript werkelt, den Parameter erkennt und dynamisch das Druckstylesheet als Screenstylesheet (und Druckstylesheet) einbindet.

          Auf deutsch:
          Du brauchst keine extra Druckansicht, wenn du folgendes tust:
          "screen.css" (Dateiname ist natürlich frei) als media="screen" einbinden.
          "print.css" (Dateiname ist natürlich auch frei) als media="print" einbinden.

          In screen.css ist die Definition für die Bildschirmausgabe, in print.css die für die Druckausgabe. Je nach Browser siehst du von dieser Druckausgabe erst was beim Ausdrucken (irgendein IE 5.x hat keine Druckvorschau), oder schon bei der Druckvorschau (Opera ist da besonders hervorzuheben, die Druckansicht kann man direkt per Button umschalten).

          Ein ordentlicher Browser (und ich kenne in diesem Zusammenhang keine unordentlichen Browser) wird niemals das print.css, welches mit media="print" (oder mit einem passenden @import) eingebunden ist, für die Bildschirmdarstellung verwenden.

          Deshalb: Wenn du die Druckdarstellung im Browserfenster darstellen willst, ohne dass der Benutzer die Druchvorschau benutzt, dann mußt du (deswegen der URL-Parameter) dynamisch das print.css auch für media="screen" einbinden.

          Oder du bindest einmal ohne media-Angabe das screen.css ein (gilt dann auch für die Benutzer, die diese Seite direkt ausdrucken - ist also reichlich sinnlos), und in der Druckausgabe dann das print.css.

          Sowas ist aber tatsächlich unnötiger Doppelaufwand. Erstens muß man als Benutzer dann die fast gleiche HTML-Seite zweimal laden, einmal fürs angucken, einmal fürs Drucken, und zweitens muß dafür natürlich Serverlogik arbeiten, obwohl der Browser den Druck viel einfacher direkt gestalten könnte, indem einfach zwei Stylesheets eingebunden sind - eins für screen, eins für print.

          - Sven Rautenberg

          --
          "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
          1. Hi Sven,

            Auf deutsch:
            Du brauchst keine extra Druckansicht, wenn du folgendes tust:
            "screen.css" (Dateiname ist natürlich frei) als media="screen" einbinden.
            "print.css" (Dateiname ist natürlich auch frei) als media="print" einbinden.

            Genau so habe ich es auch. Ich wollte halt "mal" benutzerfreundlich sein und extra noch eine Druckansicht generieren lassen. *ggg*
            Naja, so reicht`s letztendlich auch aus.
            Das Problem ist nur, dass nicht jeder Browser eine Druckansicht besitzt (Bsp.: IE 5.5)...

            Viele Grüße
            Erri

            --
            Dies sagt doch alles: http://forum.de.selfhtml.org/archiv/2003/9/57903/#m324482
            ::Jeder war mal Anfänger::
            1. Hallo,

              Das Problem ist nur, dass nicht jeder Browser eine Druckansicht besitzt (Bsp.: IE 5.5)...

              Der 5.0 hat keine, der 5.5 AFAIK schon.
              Die fehlende Druck_vorschau_ ist aber sowieso nicht tragisch.

              Hauptsache, die Browser beruecksichtigen beim richtigen
              _Drucken_ auf Papier das entsprechende Stylesheet.
              Das tut der MS IE 5.0 sicher, IIRC sogar schon der 4.0.

              Serverseitig generierte "Druckversionen" sind somit
              eigentlich nur noch fuer Netscape 4 notwendig.
              Und der ist ja zum Glueck am Aussterben... ;-)

              Gruesse,

              Thomas

  2. Hi,

    Kann mir jemand helfen, wie ich hier vorgehen muss?

    Einfach in der Druckseite die Print-CSS-Datei als Screen-CSS-Datei einbinden. :-)

    Ein Beispiel, wo ich dies mit JavaScript (und ein- und derselben HTML-Datei) tue: s. URL-Link oben ...

    Gruß, Cybaer

  3. Hallo,

    Eigentlich ist das ganze nicht unbedingt notwendig.
    Normalerweise reicht es, die beiden Stylesheets
    mit dem entsprechenden Media-Attribut im LINK-Element
    einzubinden.
    http://aktuell.de.selfhtml.org/tippstricks/css/drucklayout/index.htm

    Nun möchte ich über einen Link <a href="http://www.homepage.de/index.html>Druckversion</a>
    die Druckversion in einer neuen Seite öffnen.

    Mit reinem HTML bzw. CSS geht das nicht.

    Entweder bastelst Du serverseitig rum.
    Das ist zuverlaessiger.
    index.html => normale Version fuer beide Medien.
    index.html?media=print => Print-Version
    Einen Ansatz mit PHP findest Du hier:
    http://www.tiptom.ch/tests/phpssi/2versionen.php
    (Leicht veraltet - im Skript sollte man statt direkt
    auf $media lieber auf $_GET['media'] zugreifen.)

    Oder Du bastelst mit JavaScript rum.
    Das ist weniger zuverlaessig.
    Mit dem Suchbegriff "Style Switcher" findest
    Du vielleicht was.

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/