Single-page-Anzeige, multi-page print problem
Einer web-Seite zeigt Folgendes an:-
- Bob
- Fred
- John
Jedoch, wenn der Benutzer (das wäre ich) druckt die web-Seite möchte ich mehrere Wiederholungen dieser Ausgabe mit leichten Variationen werden auf getrennte Seiten gedruckt :-
- Bob
- Fred
- John
>page break here<
- Bob
- Fred
- John
>page break here<
- Bob
- Fred
- John
In der Realität ist der Inhalt der Seite größer ist (obwohl auch innerhalb einer DIN A4-Seite Wert) und die Anzahl der ausgabeseiten ist über 20. Ich würde lieber eine elegante cross-browser-Lösung, aber letztlich eine Lösung, die funktioniert auf Internet Explorer 7 ist akzeptabel.
Ich bin mit ASP.NET MVC mit jQuery (obwohl gerade die JavaScript-Lösung ist in Ordnung).
Edit: Page-Break-XXX css-Stil wird ein Teil der Antwort, aber ich bin besonders daran interessiert, ein Mittel, um dynamisch erstellen Sie die print-version HTML-vom-Bildschirm-version. Hinweis: ich will nicht, um zu navigieren, um eine "Drucker-freundliche" Seite und dann drucken. Ich will einfach nur, um zu schlagen die Browser-Schaltfläche "drucken" und die Magie passiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, also unter Berücksichtigung der Kommentare etc auf mein post so etwas wie dieses:
Für die einfache Anzeige hier, ich bin auf der Seite styles, aber Sie können leicht mit off-page-Referenzen.
Deklarieren die folgenden Stile:
Dann, sind Sie gehen zu müssen, tun Sie etwas schweres heben in Ihren anzeigen, um HTML suchen etwas wie diese:
Nun für eine "angemessene display-Methode".
Ich fange gerade mit MVC, so haben Sie wahrscheinlich eine bessere Methode, dies zu tun, aber für jetzt, ich würde wahrscheinlich verwenden eine Methode RenderPartial wie diese:
Ihre Benutzer-Steuerelement kann dann handhaben den Großteil des Displays, Einstellung der Klasse des übergeordneten divs (oder was auch immer element, das Sie verwenden) und Fettformatierung bis der Benutzer auf der Grundlage der übergebenen - wie ich schon sagte, gibt es möglicherweise einen besseren Weg zu tun, die teilweise Zeug.
Natürlich, werden Sie wahrscheinlich wollen völlig andere rendering der Benutzer zum anzeigen und drucken - ich denke, du bist wahrscheinlich hinzufügen ein bisschen jQuery Güte ausblenden und anzeigen von Sachen, etc, Sie sind eigentlich Los, um die Anzeige auf die gedruckte version, so dass Sie wahrscheinlich wollen zwei verschiedene Benutzer-Steuerelemente, und kann dann Weg, mit nicht vorbei an der IsPrintable Eigenschaft.
Auch, wie es steht, dies wird drucken Sie eine leere Seite am Ende, aufgrund der "page-break-after" - Stil auf alle divs - du würdest vielleicht möchten beachten Sie, dass Sie auf der letzten div, und haben einen anderen Stil auf, dass, es sei denn, Sie haben Informationen, die Sie möchten, auf die Letzte Seite.
Ich bin mir nicht sicher, Sie können alles über CSS, aber hier sind einige, um Ihnen den Einstieg.
Um einen Seitenumbruch in CSS beim drucken verwenden:
Diese nehmen Werte von:
Wenn Sie bereit sind, um irgendeine Art von "Print" - Seite listet die Informationen wie Sie wollen, mit denen diese Formatvorlagen auf die wiederholten Elemente, die Sie sollten gut zu gehen.
Sie tun müssen, wird alles über JavaScript, erstellen Sie eine Druck-link, der beim anklicken ruft das Fenster.drucken Sie().
Jedoch vor, die aufgerufen wird, erstellen Sie die Ausgabe, die Sie wollen, und legen Sie Sie in einen separaten container (div, span, jedes beliebige html-element unterstützt, dass die tags, die Sie gehen, um innerhalb es). Verstecken Sie den Behälter mit Ihrem Haupt-stylesheet, und erstellen Sie ein separates stylesheet für print-Medien. Innerhalb dieser neuen stylesheet zeigen Sie das container-element und verstecken die alten Elemente und alles, was, die Sie nicht drucken möchten.
Wenn Sie möchten, zu bereinigen, die Seite danach dann ein Intervall festlegen, mit SetInterval klar, bis die unerwünschte container. Ich würde es nicht tun, unmittelbar nach dem Aufruf-Fenster.print (), weil ich mir den Drucker nicht abholen auf der HTML-änderungen, aber eine quick-test wird Ihnen sagen, sonst.
Wenn es ein Weg des Zuhörens, die für einen Druck von Ihrer Seite mit javascript-dann könnten Sie hook up, wie gut.
Edit:
Wie Sie mit jQuery würde ich clone die original-Liste mit
Klon-Dokumentation