2009-06-04 12 views
4

Ich muss einige HTML-Inhalte anzeigen, so wie sie gedruckt werden. Im Grunde möchte ich die Browser-Druckvorschau-Funktion emulieren.So zeigen Sie eine Druckvorschau eines HTML-Dokuments an

Ich bin nicht sicher, wie man das nur mit HTML/CSS/JavaScript macht. Die einzige Lösung, die ich gefunden habe, besteht darin, den HTML-Code in PDF zu konvertieren, so dass er in Seiten aufgeteilt wird und dann diese PDF in Bilder konvertiert und jedes Bild nacheinander druckt.

Es wird sehr hilfreich sein, wenn jemand eine direktere Methode zeigen kann. Ich bin mir nicht einmal sicher, ob das möglich ist.

BTW, ich benutze PHP im Backend, also wenn es eine PHP-Klasse dafür gibt, wird es hilfreich sein.

Die Seitengröße für diplaying es Brief egal sein, was der Benutzer

konfiguriert haben diese, wie sie im Browser aussehen sollte: alt text

+3

Sie meinen also, anstatt die Druckvorschaufunktion eines Browsers zu verwenden, möchten Sie die Druckvorschau als tatsächlichen Webseiteninhalt anzeigen? –

+0

genau, das ist richtig – Flupkear

Antwort

3

Ich glaube nicht, dass dies möglich ist. Sie können nicht alle Druckeinstellungen der Benutzer im Browser (Javascript) und definitiv nicht auf dem Server (PHP, ASP, Java) wissen.

Update

Denk darüber auf diese Weise (bitte beachten Sie, dass eine anständige 100% feste Druckvorschau ist nicht möglich):

  • Benutzer auf Seite navigiert und bitten um eine Druckvorschau
  • Webseite bietet Druckvorschau (vorzugsweise in einem hTML-Format, sonst png oder pdf)
  • mag User und will Druck auf:
    1. Vom Browser
    2. Von einiger Bildüberprüfungs-/Bearbeitungsprogramm (png)
    3. Von Acrobat (pdf)
  • Jede Drucklösung hat ist es eigene Druck ... Dialog. Sie können die Druckeinstellungen hier ändern.

Es ist der letzte Punkt, wo alles, was Sie wollen nicht ... Sie haben keine Kontrolle über die Ausgabe mehr an diesem Punkt (von Ihrer Website) ...

+0

danke, ich habe vergessen zu erwähnen, dass die Seitengröße ist Brief, egal was der Benutzer konfiguriert hat – Flupkear

+1

Die Seitengröße ist nur ein Problem. Die Marke/das Modell des Druckers bestimmt den druckbaren Bereich des Bildes und beeinflusst die weichen Seitenumbrüche und Ränder. Es gibt wirklich keine Möglichkeit, zuverlässig vorherzusagen, wie es aussehen wird, ohne die Details des Druckers und des Druckertreibers zu kennen. – JohnFx

+1

In der Tat habe ich die Druckeinstellungen der Benutzer gesagt, ich meine die Client-Druckkonfiguration (all das, was JohnFx angibt). – Ropstah

1

HTML war nicht wirklich gemeint für Seitenlayout sollte es auf dem Bildschirm gelesen werden. Warum ist die Seitenansicht der Browser nicht gut genug?

Anyways, was Sie tun könnten, ist zu versuchen, die HTML in Latex oder etwas ähnliches zu konvertieren, und das zu einem PDF oder PNG auf der Serverseite rendern und das anzeigen. Aber das würde die Verwendung sehr komplizierter HTML-Layouts ausschließen, sonst wird es ziemlich unangenehm.

+0

danke, das ist die gleiche Lösung, die ich kam mit – Flupkear

+1

Dies wird den Benutzern keine faire Druckvorschau geben, es sei denn, sie erhalten die konvertierten PDF oder PNG zu drucken. Selbst dann hängt es vom Drucker ab, wie es aussehen wird (Sie zeigen einen randlosen Drucker an, aber der Drucker kann nicht randlos drucken ... wird er auf die druckbaren Abmessungen komprimiert oder druckt er mehrere Teile über mehrere Seiten hinweg ...? – Ropstah

+0

Die Idee ist, dem Benutzer zu zeigen, wie viele Seiten der HTML-Ausdruck enthalten soll, wenn er gedruckt werden soll, wird der ursprüngliche HTML-Code verwendet, also der Rand und alles, was vom Drucker eingestellt wird – Flupkear

3

Wie andere darauf hinweisen, können Sie dies nicht tun. Meine Empfehlung ist, dass Sie eine "druckerfreundliche" Version erstellen, die nur einen einfachen weißen Hintergrund und einfachen schwarzen Text enthält. Aber das ist so nah wie möglich an der eigentlichen "Druckvorschau".

0

Ich denke, es gibt eine einfache Problemumgehung.

Sie können Benutzer die Seitengröße und obere, untere, linke, rechte Ränder fragen. Rendern Sie dann die Seite in PDF mit diesen Einstellungen. PDF garantiert, dass die Seite wie generiert gedruckt wird.

Ich denke, dass dieser Ansatz gut funktionieren sollte.