wpf wydruk html

0

Witam!
Mam mały problem, a mianowicie w jaki sposób wydrukować plik html (jak z przeglądarki) w aplikacji wpf?

1

jeśli chcesz wydrukować już "gotową" (nie wiem jak odmienić wyrenderowaną?) stronę to musisz ją otworzyć w jakimś silniku https://www.google.pl/search?q=wpf+webbrowserromium to już tylko Twój wybór. Oczywiście nie musisz jej otwierać w przeglądarce a we własnym oknie "podglądu". Jak to zrobić zależy od silnika, który wybierzesz a opisów w necie jest od metra, tu np. o WebBrowser

0

Ok, ale jednak problem polega na tym, że brakuje mi przy WebBrowser metody print? Jak drukować?
Troszkę szperałem, ale niestety nie dało to żadnego wyniku.

PrintDialog pd = new PrintDialog();
pd.PrintDocument(((IDocumentPaginatorSource)web1.Document).DocumentPaginator, "My App");

wywala błąd:

An exception of type 'System.InvalidCastException' occurred in WpfApplication2.exe but was not handled in user code

Additional information: Nie można rzutować obiektu modelu COM typu 'mshtml.HTMLDocumentClass' na typ interfejsu 'System.Windows.Documents.IDocumentPaginatorSource'. Ta operacja nie powiodła się, ponieważ wywołanie metody QueryInterface dla składnika modelu COM w celu uzyskania interfejsu o identyfikatorze IID '{2C0C27DF-282F-3225-ADCD-CEC68F890EEB}' nie powiodło się z powodu następującego błędu: Taki interfejs nie jest obsługiwany. (Wyjątek od HRESULT: 0x80004002 (E_NOINTERFACE)).

Spróbowałem więc innego rozwiązania:

mshtml.IHTMLDocument2 doc = web1.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print",false);

drukuje, jednak z oknem dialogowym, którego nie potrafię wyłączyć...
Proszę was o wsparcie.
Bardzo mi na tym zależy.

0

A wiec problem rozwiązałem inaczej (może się przyda dla potomnych).
Wpadłem na pomysł jak to rozwiązać.
W sumie dlaczego skoro nie ma w wpfach drukowania html a jest w windowsforms - to czemu tego nie wykorzystać.
Wiec w wpfie stworzyłem okno windows form, które otwiera się, drukuje co mi potrzebne i zamyka ;)
Proste a jednak genialne ;)
Może nie jest to najlepsze rozwiązanie, ale działa. Chyba, że ktoś wpadł na inny pomysł ;)
pozdrawiam;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1