Drucken einer anderen Seite

Steusi

Nasenbär
Hallo Leute,

ich würde gern einen Druck-Link erzeugen, der auf eine .txt Datei verweist und ausgedruckt wird.

Sprich ich übergeben der Funktion den Link zur Datei und diese ruft dann den Druckdialog für diese Seite (.txt) auf.

Wie kann ich das machen?

Dachte in etwa so:
Code:
function drucken(link) {
druck = window.open(link,"Druck");
// self.focus();
druck.print();
druck.close();
}
 
Zuletzt bearbeitet:
Wenn der Link ein separates Browserfenster öffnet und die Textdatei in diesem Fenster dargestellt wird, dann könntest du im body der Seite die Druckfunktion über das onload-Ereignis auslösen!?
 
Nein die Datei soll wenn möglich nicht angezeigt werden, sondern nur der Druckdialog geöffnet werden.
Vielleicht sieht der Funktionsaufruf über den Link bei mir auch falsch aus...
 
Ich muss meinen Satz zurücknehmen. Es wird doch nur eine weiße Seite gedruckt und nicht der tatsächliche Inhalt.
 
Mal eine blöde Frage.

Kann man nicht ein Fenster öffnen bei dem innerhalb eines div-Containers eine Meldung erscheint "Die gewünschte Datei wird gerduckt!" und dieser Container mit Hilfe von CSS beim Drucken nicht mitgedruckt wird.

Dann gibt es im Hintergrund einen zweiten div-Container das beim Anzeigen am Bildschirm nicht sichtbar ist dafür beim Drucken erscheint.

HTML:
<style type="text/css">
@media screen   {
#show   {
            position: absolute;
            z-index: 1;
            left: 0px;
            top: 0px;
            height: 100%;
            width: 100%;
            border-style: solid;
        }
#print  {
            display: none;
        }
                }
@media print    {
#show   {
            display: none;
        }
#print  {
            position: absolute;
            z-index: 1;
            left: 0px;
            top: 0px;
            height: 100%;
            width: 100%;
            border-style: solid;
        }
                }
</style>
<div id="show"><h1>DIE GEW&Uuml;NSCHTE DATEI WIRD GEDRUCKT.</h1></div>

<div id="print">Dieser Text wird gedruckt aber nicht angezeigt.</div>
 
Kann man nicht ein Fenster öffnen bei dem innerhalb eines div-Containers eine Meldung erscheint "Die gewünschte Datei wird gerduckt!" und dieser Container mit Hilfe von CSS beim Drucken nicht mitgedruckt wird.

Ich habe es so verstanden, dass eine Textdatei gedruckt werden soll. Wenn der zu druckende Inhalt auch in ein Dokument eingebunden werden kann, sollte das ja kein Problem mehr sein.
 
Hallo!

Ich habe es so verstanden, dass eine Textdatei gedruckt werden soll. Wenn der zu druckende Inhalt auch in ein Dokument eingebunden werden kann, sollte das ja kein Problem mehr sein.
Mit einer reinen ASCII-Datei und der include() Funktion von PHP ist es kein Problem.
So erfährt der User weder den Dateinamen noch den Pfad zur Datei.
Und den Inhalt der Datei bekommt er ja sowieso zu sehen..... spätestens nach dem Ausdruck. ;)

Allerdings ist zu bedenken dass dabei alle Zeilenumbrüche und Leerzeilen verloren gehen..... es wird also zu einem reinen Blocksatz.
Noch schlimmer ist es dass bestimmte Zeichenfolgen (z.b. Code-tags) zu Problemen führen.

Sinnvoller wäre es also die Datei auszulesen:
PHP:
<?php
$file     = "php.ini";
$handle   = fopen($file, "r");
$contents = fread($handle, filesize($file));

echo nl2br(htmlspecialchars($contents));
?>
Zumindest mit der php.ini, die ja reichlich Sonderzeichen und auch Code-tags enthält, konnt ich spontan keine Probleme feststellen.
Zeilen werden, wenn sie nicht zur druckbaren Breite passen, entsprechend umbrochen (ich habe testhalber einfach mal den rechten Seitenrand auf 10cm gestellt :D).
Und in der druckbaren Höhe kommen halt soviele Zeilen wie sie auf eine Seite passen.
Du könntest die Ausgabe vom echo sogar in ein DIV-Container packen und so z.b. mittels CSS eine andere Schrift bestimmen. ;)

Und wie tombe schon gesagt hat, den Druckdialog einfach per onload auslösen.
Ob der Text, der nach dem Ausdruck eh zu sehen ist, auf der Printseite mittels "@media screen" ausgeblendet wird, ist wohl eher Geschmacksssache.
Wirklich sinnvol sind "@media screen" bzw. "@media print" z.b. bei Links.
So kann ein Link der sich auf der Seite hinter "hier klicken" verbirgt, im Ausdruck im Klartext mit ausgedruckt werden (auf einem Ausdruck macht "hier klicken" ja nicht wirklich sinn :D).

Gruss Dr Dau
 
Ob der Text, der nach dem Ausdruck eh zu sehen ist, auf der Printseite mittels "@media screen" ausgeblendet wird, ist wohl eher Geschmacksssache.
Ich revidiere.....

Jetzt haben wir es:
PHP:
<style type="text/css">
@media screen {
    #print {
        display: none;
    }
}

@media print {
    #show {
        display: none;
    }
}
</style>
<div id="show">
    <div>Wenn Sie die php.ini drucken m&ouml;chten, dann dr&uuml;cken Sie den Button.</div>
    <input type="button" onclick="window.print()" value="php.ini drucken...">
</div>

<?php
$file     = "php.ini";
$handle   = fopen($file, "r");
$contents = fread($handle, filesize($file));

echo "<div id=\"print\" style=\"font-family:arial\">";
echo nl2br(htmlspecialchars($contents));
echo "</div>";
?>
Erfüllt das den gewünschten Zweck?
 
Vielen Dank für eure Unterstützung, nun klappt der Ausdruck. Ist zwar ein Schritt (Klick) mehr aber egal und ich habe in dem "Druck-DIV" folgendes stehen:
PHP:
echo ("<pre>");
echo htmlspecialchars($contents);
echo ("</pre>");
Damit die Tabstops nicht verloren gehen. Ausdruck ist einfach und schlicht, so wollte ich es -> perfekt!
 
Zurück