Ostatnio próbowałem generować raporty w Silverlight 4. W mojej domenie dotyczącej problemów raporty te muszą być przesyłane bezpośrednio do drukarki i/lub klienta -są aplikacją SL tworzy plik PDF i pozwala użytkownikowi przechowywać go gdzieś.Tworzenie raportów w Silverlight (w formacie PDF lub wysyłanie go do drukarki)
Jeśli chodzi o raport, w przybliżeniu składa się on z 50% tekstu przepływu (łącznie z wyliczeniami), 30% tabel i 20% wykresów. Część tekstowa przepływu sprawia, że jest ona trudniejsza, ponieważ konieczne będzie właściwe przełamanie linii.
Dotychczas Próbowałem następujące metody - każdy z własnych niedociągnięć, które czynią je nie tyle wykonalne:
Silverlight własnego
PrintDocument
: Technicznie rzecz biorąc, istnieją dwa główne problemy. Po pierwsze, dostanie się podziały stron do pracy i drukowanie UIElements na nim z odpowiednim układem jest trochę brudne hackjob i pełne kompromisów; na szczęście to część, którą udało mi się dotychczas wypracować. Jednak klasaPrintDocument
zawsze renderuje wszystkie wizualizacje jako bitmapy przed ich wysłaniem; to nie jest tak zabawne, jeśli używa się drukarki PDF i ma nadzieję, że nadal będzie w stanie wyszukiwać/wybierać tekst. Podejście Davida Polla w filmie "Silverlight and Beyond" [1] nie było tak pomocne, ponieważ z natury wiąże się z tym samym podejściem i dlatego cierpi z powodu bardzo podobnych problemów.silverPDF [2]: ledwo udokumentowana biblioteka, która wymaga ręcznego wykonania większości układu (poprzednie podejście pozwoliło mi przynajmniej na ponowne wykorzystanie mechanizmu układania Silverlighta). Do tej pory nie widzę sposobu (na przykład) zmierzyć akapity, a jedyna próbka z długim tekstem przepływu wykorzystuje zakodowane bezwzględne wartości dla prostokątów układu. Poza tym strona rozwijająca się wydaje się nieaktywna.
Osobiście mam teraz na myśli zupełnie inną strategię: po prostu generuj dokumenty HTML. Miałem jednak nadzieję, że społeczność tutaj może mieć wskazówki dotyczące obu powyższych podejść lub znać inne dobre podejścia.
Dzięki z góry, ~ Manny
Dziękuję za skierowanie mnie w stronę Silverlight Reporting. Postaram się sprawdzić, jak daleko może to mnie doprowadzić :-) Sprawdzę ponownie za dzień lub dwa. "Drukowanie po stronie klienta" jest nieco trudnym, ale nie całkowicie wykutym w kamieniu wymaganiem. – Manny
Bez zmartwień Manny. Czekamy, aby zobaczyć, jak to działa. –
W rzeczywistości raportowanie Silverlight poszło całkiem nieźle, biorąc pod uwagę okoliczności. Ale pod koniec dnia możliwości drukowania SL4 (lub ich brak) wciąż dają raczej mierne wyniki (rastaryzowane itp.). Najprawdopodobniej spróbujemy znaleźć alternatywę (albo inny format, na przykład HTML, albo wygenerować go w innym, bardziej wydajnym środowisku), jeśli czas na to pozwoli. – Manny