2008-12-02 5 views
11

Ich bin ein Gutschein auf dynamische Eingabe und ein zugeschnittenes Bild generieren, und ich zeige den Gutschein mit Ntml und Css jetzt, das Problem ist, Drucken dieser wurde ein Problem wegen, wie Hintergründe verschwinden beim Drucken und anderen Problemen, daher denke ich, dass die beste Lösung darin besteht, ein Bild basierend auf dem HTML zu erzeugen, oder eine Art Vorlage, die Zeichenketten und ein Bild aufnimmt und ein Bild unter Verwendung des Bildes erzeugt eingespeist als Hintergrund und legt die Couponinformationen oben drauf.Rendern HTML als Bild

Gibt es irgendwas, das das schon macht?

Dies ist für eine ASP.NET 3.5 C# -Website!

Vielen Dank im Voraus.

edit: Es wäre großartig, wenn die Ausgabe auf der HTML-Eingabe basieren könnte, da der Coupon durch das Manipulieren des DOM mit jQuery und Ziehen von Sachen, alles funktioniert gut, es ist nur, wenn es darum geht Drucken (auf Papier) Es hat Probleme mit der Z-Indizierung.

Antwort

10

Sie können eine aspx-Seite erstellen, die den Antworttyp in das gewünschte Format ändert und das Bild dann in den Stream einfügt. Ich habe einen Barcode-Generator erstellt, der ähnlich funktioniert. Ohne alle Formalitäten von der Bilderzeugungs, werden Sie Page_Load wird wie folgt aussehen:

Bitmap FinalBitmap = new Bitmap(); 
MemoryStream msStream = new MemoryStream(); 

strInputParameter == Request.Params("MagicParm").ToString() 

// Magic code goes here to generate your bitmap image. 
FinalBitmap.Save(msStream, ImageFormat.Png); 

Response.Clear(); 
Response.ContentType = "image/png"; 

msStream.WriteTo(Response.OutputStream); 

if ((FinalBitmap != null)) FinalBitmap.Dispose(); 

und das ist es! Alles, was Sie in Ihrem Bild tun müssen, ist die URL so einzustellen, dass Sie etwas wie RenderImage.aspx? MagicParm = WooHoo oder was auch immer Sie brauchen. Auf diese Weise können Sie alles rendern, was Sie angeben möchten.

+0

so sein erlaubt, dynamisch ein Bild als Hintergrund mit Text an zu erzeugen top, aus einer Datenbank gezogen? Wenn es so klingt, klingt es schick! – Tablet

+0

Ja. Sie können entweder den gesamten Coupon als Bild in Ihrem Renderer erstellen und diesen zurückgeben. Oder wenn Sie Text darüber legen möchten, müssen Sie die Dinge ein wenig komplizierter machen und ein div oder eine Tabelle mit dem Renderer als Hintergrund dafür erstellen. –

+0

Was ist der magische Code? – user287745

0

Es gibt eine sehr leistungsfähige Bilderstellungsbibliothek namens GD, die ich oft mit PHP verwende.

Ich bin davon überzeugt, dass es einen Wrapper für diese Bibliothek gibt, den ASP-Programmierer verwenden können. Try this

0

Wenn die "anderen Probleme" nicht besonders schwerwiegend sind, können Sie Ihren Benutzern nicht einfach anweisen, beim Drucken Hintergrundbilder einzuschalten?

In jedem Fall würde ich standardmäßig ein PDF statt ein Bild dienen, doppelt so, da es für den Druck bestimmt ist.

+0

Kann ich ein PDF mit HTML generieren? Wenn es in PDF "druckt", würde es gerade das gleiche Problem verursachen, das ich mit z-Indexierung habe – Tablet

1

Versuchen Sie PDFSharp ... es ist nicht gerade ein "nimm dieses HTML und mach ein PDF", aber mit ein wenig Fummelei kannst du einfach ein PDF aus den Informationen machen, die du benutzt um HTML zu machen.

+4

kleiner Betrag kann eine Untertreibung dort sein; D wird –

3

Sie können HTML in einer Bitmap mit dem WebBrowser-Steuerelement in einer Winforms- oder Konsolenanwendung rendern.

Ein Beispiel dafür ist hier zu finden: http://www.wincustomize.com/articles.aspx?aid=136426&c=1

Das obige Beispiel modifiziert werden kann, in ASP.Net zu laufen, indem eine neue STAThread zu schaffen und ein Application.Run Durchführung auf eine neue Nachrichtenschleife zu starten.

3

PHP/Ruby-Alternative


Wenn Sie diese Frage zugegriffen haben, und suchen eigentlich für soething, die ohne den Windows arbeiten, können Sie die KHTML-Bibliothek versuchen: http://wiki.goatpr0n.de/projects/khtmld

Die Website hat ein lächerlicher Name, ich gebe zu, aber ich kann Ihnen versichern, dass es echt ist. Andere verwandte Seiten sind: die sourceforge Seite http://khtml2png.sourceforge.net/

0

Richten Sie einfach Ihre CSS richtig ein, so dass Sie eine CSS-Datei haben, die auf das Druckmedium ausgerichtet ist. Es ist ziemlich einfach zu garantieren, dass der Gutschein immer lesbar sein wird, ohne sich darüber Gedanken zu machen, ob sie bg Bilder haben oder nicht. Es macht keinen Sinn, sich zu einem Bild zu bewegen, es sei denn, es gibt einen Grund, warum Sie nicht möchten, dass es maschinenlesbar ist.

0

Ich habe es nicht versucht, aber Sie sollten HTML in ein Bild rendern können, indem Sie das WebBrowser-Steuerelement und die DrawToBitmap() -Methode verwenden, die von der Basis-Control-Klasse geerbt wurde.

UPDATE: Ich habe es selbst versucht und es gibt einige Vorbehalte. Das WebBrowser-Steuerelement scheint die Webseite nicht darzustellen, bis das Steuerelement angezeigt wird. Daher muss sich der WebBrowser in einem Formular befinden und das Formular muss angezeigt werden, damit der HTML-Code gerendert und das DocumentCompleted-Ereignis ausgelöst werden kann.

1

MARKUP NUR alternative Lösung

Verwendung SVG und XSLT die HTML-Daten in ein Bild zu verwandeln, die/etc gemacht/gespeichert werden können.

Ich gebe zu, dass es anfangs mühsam war, dies wegen aller Koordinaten zu erledigen, aber es lohnt sich, wenn es einmal läuft.