2011-02-09 8 views
5

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 klasa PrintDocument 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

Odpowiedz

5

Czy trzeba wygenerować raport na kliencie, czy można dostać serwer, aby go wygenerować? Twoje opcje są lepsze, jeśli możesz je wygenerować na serwerze. Osobiście uważam, że sposób drukowania Silverlight w tej chwili jest bardzo słaby w używaniu raportów (wysyłanie każdej strony do drukarki jako rastrowej zamiast wektorowej, co skutkuje potencjalnie ogromnymi ilościami danych przesyłanych przez sieć i niższą jakością wydruków). Uważam, że najlepszą strategią jest generowanie pliku PDF na serwerze (umożliwiającego korzystanie z mechanizmu raportowania) i wyświetlanie go w aplikacji. Istnieje również kilka komercyjnych produktów (takich jak przeglądarka raportów Silverlight firmy Reporter, Report Sharp Shooter lub nawet zestaw narzędzi do tworzenia dokumentów pierwszego piętra). Jeśli rozwiązanie po stronie klienta jest naprawdę potrzebne, być może jedna z nich może być najlepszą opcją (chociaż jakość drukowania będzie nadal niska). Zauważ, że Silverlight 5 ma obsługiwać drukowanie wektorowe, ale jest to kolejne 6 miesięcy lub więcej od wydania. Inną opcją są ramy raportowania open source Pete Browna i Davida Polla: http://silverlightreporting.codeplex.com/.

Jeśli chcesz skorzystać z opcji generowania raportu na serwerze jako PDF i wyświetlania go w aplikacji, napisałem artykuł na ten temat: http://www.silverlightshow.net/items/Building-a-Silverlight-Line-Of-Business-Application-Part-6.aspx. Nie działa to w przypadku aplikacji OOB, ale kod źródłowy dołączony do mojej książki (Pro Business Applications with Silverlight 4) zawiera: apress.com/book/view/9781430272076.

Mam nadzieję, że to pomoże ...

Chris Anderson

+0

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

+0

Bez zmartwień Manny. Czekamy, aby zobaczyć, jak to działa. –

+0

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

Powiązane problemy