2008-12-02 10 views
11

Generuję kupon oparty na dynamicznym wprowadzaniu danych i przyciętym obrazku, a teraz wyświetlam kupon, używając ntml i css, problem polega na tym, że drukowanie stało się problemem z powodu tła znikają podczas drukowania i inne problemy, więc myślę, że najlepszym rozwiązaniem byłoby wygenerowanie obrazu opartego na html lub skonfigurowanie jakiegoś szablonu, który przyjmuje ciągi i obraz, i generuje obraz za pomocą obrazu karmione jako tło i umieszcza informacje o kuponach na górze.Renderuj HTML jako obraz

Czy jest coś, co już to robi?

Jest to strona internetowa ASP.NET 3.5 C#!

Z góry dziękuję.

edit: Byłoby wspaniale, gdyby dane wyjściowe mogły być oparte na danych wejściowych HTML, ponieważ kupon został zaprojektowany przez manipulowanie DOM przy użyciu jQuery i przeciąganie elementów, wszystko działa dobrze, to tylko wtedy, gdy chodzi o drukowanie (na papierze) ma problemy z indeksowaniem.

Odpowiedz

10

Co można zrobić, to stworzyć stronę aspx, który zmienia typ odpowiedzi się w żądanym formacie, a następnie umieścić obraz w strumieniu. Stworzyłem generator kodów kreskowych, który robi coś podobnego. Nie licząc wszystkich formalności związanych z generowaniem obrazu, strona_Load będzie wyglądać mniej więcej tak:

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(); 

i gotowe! Następnie wszystko, co musisz zrobić na swoim obrazie, to ustawić URL na RenderImage.aspx? MagicParm = WooHoo lub cokolwiek, czego potrzebujesz. W ten sposób możesz renderować to, co chcesz określić.

+0

, więc pozwoli to na dynamiczne generowanie obrazu jako tła z tekstem na do góry, wyciągnięty z bazy danych? Jeśli tak, to brzmi to bardzo skromnie! – Tablet

+0

Tak. Możesz utworzyć cały kupon jako obraz w swoim rendererze i go zwrócić. Lub jeśli chcesz umieścić tekst na wierzchu, będziesz musiał zrobić trochę trudniej i utworzyć div lub tabelę z rendererem jako tłem dla niego. –

+0

jaki jest magiczny kod ?? – user287745

0

Jest to bardzo potężne biblioteki tworzenie obrazu nazywa GD które często korzystają z PHP.

Jestem przekonany, że istnieje opakowanie dla tej biblioteki, z której mogą korzystać programiści ASP. Try this

0

O ile "inne problemy" nie są dość poważne, czy po prostu nie można poinstruować użytkowników, aby włączali obrazy tła podczas drukowania?

W każdym przypadku domyślnie przesyłam plik PDF, a nie obraz, podwójnie, ponieważ jest przeznaczony do druku.

+0

Czy mogę wygenerować plik PDF za pomocą HTML? Jeśli "drukuje" do pliku PDF, spowodowałoby to tylko ten sam problem, który mam z z-indeksowaniem – Tablet

1

Spróbuj PDFSharp ... nie jest to dokładnie "weź ten kod HTML i zrób PDF", ale dzięki niewielkim rozmiarom skrzypiec możesz z łatwością utworzyć plik PDF z informacji, których używasz do utworzenia kodu HTML.

+4

mała ilość może być niedopowiedzianie; D –

3

Można renderować html do bitmapy za pomocą formantu WebBrowser w aplikacji WinForm lub konsoli.

Przykładem tego można znaleźć tutaj: http://www.wincustomize.com/articles.aspx?aid=136426&c=1

Powyższy przykład można zmodyfikować do uruchamiania w środowisku ASP.NET przy tworzeniu nowego STAThread i wykonywania Application.Run na to, aby rozpocząć nową pętlę komunikatów.

3

PHP/Ruby alternatywna


Jeśli obejrzano to pytanie i rzeczywiście szukają soething że będzie działać bez systemu Windows, można spróbować biblioteki KHTML: http://wiki.goatpr0n.de/projects/khtmld

Witryna ma śmieszne imię, które przyznaję, ale mogę was zapewnić, że jest autentyczny. Inne powiązane strony to: sourceforge page http://khtml2png.sourceforge.net/

0

Po prostu skonfiguruj swoje css tak, aby mieć plik css skierowany na nośnik druku. Dość łatwo jest zagwarantować, że kupon będzie zawsze czytelny, bez obawy o to, czy mają zdjęcia bg na ekranie, czy nie. Igłowe przechodzenie do obrazu nie ma sensu, chyba że istnieje jakiś powód, dla którego nie chcesz, aby był możliwy do odczytu maszynowego.

0

Nie próbowałem sam, ale powinieneś być w stanie wyrenderować HTML do obrazu za pomocą formantu WebBrowser i metody DrawToBitmap() odziedziczonej z podstawowej klasy kontrolnej.

AKTUALIZACJA: Próbowałem tego samodzielnie i są pewne zastrzeżenia. Formant WebBrowser wydaje się nie renderować strony internetowej, dopóki kontrola nie zostanie wyświetlona, ​​więc WebBrowser musi znajdować się w formularzu, a formularz musi być wyświetlany, aby HTML był renderowany, a zdarzenie DocumentCompleted zostało podniesione.

1

znaczników TYLKO alternatywne rozwiązanie

Zastosowanie SVG i XSLT do przekształcenia danych html do obrazu, które mogą być świadczone/zapisanego pliku/etc.

Przyznam, że na początku było to żmudne, ponieważ to wszystko działało z powodu wszystkich współrzędnych, ale warte wysiłku, gdy już jest uruchomiony.

Powiązane problemy