 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
05.07.2005, 08:13
|
#1
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Druckversion mittels PHP erzeugen
Moin TP-Dynamiker,
ist es möglich mittels PHP den Content einer Website in einer Druckfreundlichen Datei zu generieren?
Wenn ja wie funktioniert das?
In welcher Form müssen die Texte vorliegen?
Oft wird ja darauf verwiesen, das man eine Druckversion mit CSS lösen kann.
Mich interessiert aber wie das funktioniert, wenn größere Seiten zu jedem Content einen Link anbieten, Druckfreundliche Version, es geht eine neue Seite auf die meistens druck.php heisst und in der dann nur der betreffende Text steht mit angabe der Quelle und des Pfades.
Wird soetwas aus einer Datenbank generiert? Oder könnte man das auch einfacher lösen?
|
|
|
05.07.2005, 09:11
|
#2
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Sowas wird meist generiert, wenn die "Rohtexte" in der Datenbank oder einer Textdatei vorliegen.
Rein theoretisch kann man mit PHP auch eine .html Datei auslesen und massig unerwünschte HTML-Tags herausfiltern ... aber sinnvoll ist das nicht.
Am einfachsten ist es aber mit einem CSS für den Druck - dort kannst Du nicht nur eine korrekte Schrifteinheit angeben (=pt), sondern auch unerwünschte Elemente einfach wegblenden, sofern der HTML-Code entsprechend erstellt wurde.
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
05.07.2005, 09:33
|
#3
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Danke Dir Boris,
der Hintergrund meiner Frage ist folgender:
Ich finde es Userfreundlicher wenn auf einen Print-Link hin sich eine neue Seite öffnet in der nur das angezeigt wird, was tatsächlich gedruckt werden wird.
Bei der CSS-basierenden Lösung ist dies ja wohl nicht möglich, oder doch?
|
|
|
05.07.2005, 10:17
|
#4
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Doch, natürlich. Wie Boris schon sagte, Du kannst mit "display:none" alles ausblenden, was auf der Druckversion nicht erscheinen soll und auch darüber hinaus die Ausgabe optimal für den Ausdruck anpassen.
Bei modernen Browsern (sprich nicht dem IE, wer hätt's gedacht), hast Du mit CSS z.B. die Möglichkeit, hinter Links automatisch deren URL auszugeben, damit sie auch in der Papierversion nutzbar sind (anklicken geht nicht mehr, aber immerhin noch abtippen der Adresse). Das ist mit PHP natürlich auch möglich, aber deutlich komplizierter.
Ich würd CSS benutzen, für genau solche Sachen ist es gedacht.
Ein Beispiel von mir:
http://www.gy-mi.de/index/schulprofil/1/
Es gibt dort keinen "Druckversion"-Link, das Druck-Stylesheet wird zum Drucken automatisch verwendet.
Ein Link zu einer Druckversion, die man auch auf dem Bildschirm schon als solche präsentiert bekommt (in der normalen Ansicht, nicht erst in der Druckvorschau, d.h. ohne Angabe 'media="print"'), ist trotzdem sinnvoll, find ich. Zum einen weil die meisten User es so gewohnt, zum anderen weil die Sache dann auch funktioniert, wenn der Browser 'media="print"' evtl. nicht versteht.
Der Grund für das Fehlen eines solchen auf dieser Site ist nur Faulheit  .
Geändert von seb (05.07.2005 um 10:28 Uhr).
|
|
|
05.07.2005, 10:46
|
#5
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
seb hat schon alles dazu gesagt
@seb:
Dein Beispiel hat keine Hintergrundfarbe definiert, dadurch ist die Website bei mir komplett grau 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
05.07.2005, 11:22
|
#6
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Vielen Dank Seb,
ich denke auch das ich das dann am besten mit CSS löse
Habe mir soeben von Deiner Seite ein Dokument ausgedruckt, mit Firefox - nicht IE und das schaut alles sehr gut aus!
Eine Frage hätte ich aber noch:
Zitat:
|
Zitat von seb
Ein Link zu einer Druckversion, die man auch auf dem Bildschirm schon als solche präsentiert bekommt (in der normalen Ansicht, nicht erst in der Druckvorschau, d.h. ohne Angabe 'media="print"'), ist trotzdem sinnvoll, find ich. Zum einen weil die meisten User es so gewohnt, zum anderen weil die Sache dann auch funktioniert, wenn der Browser 'media="print"' evtl. nicht versteht.
|
Wie macht man das?
D.h. wie stellt man den zu druckenden Inhalt auf dem Bildschirm dar - vor dem Druckbefehl?
|
|
|
05.07.2005, 13:00
|
#7
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Zitat:
|
D.h. wie stellt man den zu druckenden Inhalt auf dem Bildschirm dar - vor dem Druckbefehl?
|
Indem Du das Druck-Stylesheet eben nicht (bzw. nicht nur) mit dem Attribut
einbindest, sondern ohne "media"-Angabe (d.h. "ganz normal"). Dann wird das CSS für die normale Bildschirmdarstellung und den Druck verwendet. Dafür brauchst Du dann aber logischerweise eine eigene "Druckansicht"-Seite.
Da Du ja offensichtlich PHP zur Verfügung hast, empfehl ich dir folgende Lösung:
Nimm deine Seite bzw. dein Script und änder sie so, dass du per GET-Argument angeben kannst, welche CSS-Datei verwendet werden soll:
PHP-Code:
// falls $_GET['css'] übergeben wurde, diesen Wert für $css nehmen, ansonsten "default.css":
if (isset($_GET['css']))
{
$css = $_GET['css'];
}
else
{
$css = "default.css";
}
// Stylesheet-Datei $css einbinden:
echo '<link rel="stylesheet" type="text/css" href="', $css, '" />';
Wenn das Script jetzt ohne "?css=dateiname.css" aufgerufen wird, wird die Datei default.css eingebunden, ansonsten das, was für "css" übergeben wurde.
Jetzt kannst Du dir ein print-Stylesheet "print.css" erstellen und deine Druckansicht so aufrufen:
PHP-Code:
script.php?css=print.css
Zusätzlich kannst Du das print-Stylesheet immer per
PHP-Code:
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
statisch definieren. Dann wird es automatisch verwendet, wenn der Browser 'media="print"' versteht (tun die meisten halbwegs aktuellen, auch der IE).
EDIT
Zitat:
|
Dein Beispiel hat keine Hintergrundfarbe definiert, dadurch ist die Website bei mir komplett grau
|
Oh...danke für den Hinweis, änder ich sofort.
...aber wieso zum Teufel stellst Du auch grau als Standard-Hintergrundfarbe ein?
Geändert von seb (05.07.2005 um 13:04 Uhr).
|
|
|
05.07.2005, 13:33
|
#8
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Übrigens, ich halte einen Link auf eine "Druckversion" für überflüssig: Es ist einfach ein Klick mehr (oder zwei, wenn man zurück zur Bildschirmversion wechselt, bzw das Fenster mit der Druckversion schließt). CSS bietet eine viel einfachere Lösung an: Einfach "Drucken" klicken und es kommt eine für den Druck optimierte Seite aus dem Drucker.
Dafür ist es erforderlich, dass man möglichst sauberen Code verwendet, d.h. alle Formatierungen im Stylesheet, nicht im HTML-Code, der die Struktur des Dokuments wiedergeben soll. Der Pfad wird normalerweise sowieso mitgedruckt, aber es spricht nichts dagegen, eine Pfadangabe anzugeben und mit CSS für die Druckversion auszublenden.
So geschehen bei mir. Das Stylesheet für die Druckversion blendet die Menüs aus und ersetzt das rewboss-Logo mit Text.
|
|
|
05.07.2005, 16:38
|
#9
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Super und Dankeschön Euch @llen
Ein für und wider da muß ich mich wohl entscheiden, entweder - oder.
Die Steuerung durch eine print.css Datei wird jedenfalls kein Problem darstellen...
|
|
|
05.07.2005, 17:03
|
#10
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Ich würd beide Lösungen parallel anbieten, also "echtes" Druck-Stylesheet per media="print" UND ne gesonderte Druckversion-Seite. Wenn Du das CSS für die Druckansicht erstmal hast, ist ja beides mit ein paar Zeilen Code gemacht.
|
|
|
05.07.2005, 18:06
|
#11
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Zitat:
|
Zitat von seb
Ich würd beide Lösungen parallel anbieten, also "echtes" Druck-Stylesheet per media="print" UND ne gesonderte Druckversion-Seite.
|
ist eine gute Idee Seb
Zitat:
|
Zitat von seb
Wenn Du das CSS für die Druckansicht erstmal hast, ist ja beides mit ein paar Zeilen Code gemacht.
|
Nur genau das ist mir noch nicht ganz klar
Ich bin eher ein PHP-Fertig-Code-Einsetzer und wüßte jetzt nicht wie ich das umsetze...
Okay - Du hast weiter oben ein Bsp. aufgeführt, aber ich weiß nicht so genau wo ich was in das Dokument einfügen muß 
|
|
|
05.07.2005, 19:17
|
#12
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Na dort, wo das <link>-Element ausgegeben werden soll, das die CSS-Datei einbindet, d.h. Im <head> deines HTML-Dokuments.
|
|
|
05.07.2005, 19:23
|
#13
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Zitat:
|
Zitat von seb
...also "echtes" Druck-Stylesheet per media="print" UND ne gesonderte Druckversion-Seite...
|
Öhm wo und wie man Stylesheets einbindet das weiß ich eigentlich.
Ich meinte wie man aus einer Datei heraus die gesonderte Druckversion-Seite generiert - bzw. wo man den dazu nötigen Code einbindet 
|
|
|
05.07.2005, 19:25
|
#14
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Das hab ich schon verstanden, und meine Antwort passt auch  .
Den ganze PHP-Code musst Du dort hin setzen, wo das <link> stehen soll. Das war's schon.
|
|
|
05.07.2005, 20:15
|
#15
|
|
TP-Moderator-Opa
Registriert seit: Jan 2004
Ort: Marbach
|
Oooops - dann habe ich wohl alles falsch verstanden 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
| | | |