7 Stimmen

Eine Seite drucken, ohne sie anzuzeigen?

Ich habe eine Seite, von der aus der Benutzer die Möglichkeit hat drucken . Die Seite, die gedruckt wird, ist jedoch nicht die Seite, die der Benutzer gerade anschaut, sondern eine neue Seite, die ich im Hintergrund generieren und (möglicherweise) nur den Druckdialog für sie anzeigen möchte.

Nur um das klarzustellen:

  1. Benutzer ist auf " Ansicht.aspx " und klickt mein Drucken Schaltfläche (nicht die des Browsers).
  2. Le site Drucken lädt den Inhalt von " Druckbar.aspx " und zeigt einen Druckdialog dafür an, während der Benutzer noch auf " Ansicht.aspx ".

Zu Ihrer Information: Was ich zu vermeiden versuche, ist die " Druckbar.aspx " in einem neuen Fenster öffnen und dann den Druckdialog anzeigen.

Vielen Dank im Voraus.

12voto

Carter Medlin Punkte 11077

Verwenden Sie eine Kombination von MEDIA-Tags in CSS, um Objekte zum Drucken ein- und auszublenden.

<STYLE type="text/css">
@media print {
   .PrintOnly {font-size: 10pt; line-height: 120%; background: white;}
}
@media screen {
   .PrintOnly {display: none}
}
</STYLE>

Sie können Steuerelemente erstellen, die den Stil Display:none auf dem Medienbildschirm, so dass der Benutzer sie nur beim Drucken sieht.

<DIV class="PrintOnly">
This control will only show up during printing
</DIV>

Jedes Ihrer Steuerelemente kann als "PrintOnly" klassifiziert werden, so dass Sie es nur beim Drucken sehen. Sie müssen die CSS-Klasse nur einmal für "@media screen" und einmal für "@media print" definieren, um sicherzustellen, dass sie sich unterschiedlich verhalten.

Sie können auch ein komplettes Stylesheet für den reinen Druck einbringen.

<LINK rel="stylesheet" type"text/css" href="screen.css" media="screen">
<LINK rel="stylesheet" type"text/css" href="print.css" media="print">

1voto

loxxy Punkte 12720

Wenn die Drucken angeklickt wird, fügen Sie die Druckbar.aspx in ein verstecktes Panel von view.aspx. Reagieren Sie, indem Sie Javascript in das onload-Ereignis von view.aspx & drucken Sie das verborgene Panel mit window.print()

0voto

spinon Punkte 10402

Ich glaube nicht, dass das, was Sie anstreben, möglich ist. Aber ich könnte falsch liegen. Obwohl der bessere Weg, dies zu nähern ist, ein anderes CSS-Stylesheet zu verwenden.

0voto

myermian Punkte 30905

Sie könnten die Seite in ein verstecktes IFrame-Element laden und dann Javascript verwenden, um die Druckfunktion dieser Seite auszuführen.

Aber, wie @carter vorgeschlagen hat, ist CSS der bessere Ansatz. Warum doppelte Inhalte mehr als einmal laden, wenn man den aktuellen Inhalt einfach neu gestalten kann?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X