2013-05-08 18 views
7

TLDR W jaki sposób można skutecznie określić liczbę stron, które mają zostać wydrukowane?Wydajny sposób liczenia liczby stron do wydrukowania?

** Tylko uwaga: zaznaczam odpowiedź klugeramy jako odpowiedź na moje pytanie. Nadal jestem otwarty na inne sugestie!

Obecnie mam aplikację do produkcji, która drukuje faktury. Sam druk nie stanowi problemu: informacje o kliencie, szczegóły faktury itp. Są drukowane tak, jak powinny. Jednak użytkownicy narzekają na czas, w którym moje oprogramowanie wysyła zadanie drukowania do drukarki.

W tej chwili wdrożyłem raczej nieefektywny sposób drukowania. Aby wiedzieć, ile stron muszę wydrukować, wykonuję "pracę na sucho" zadania drukowania i anuluję je przed wysłaniem do drukarki. Następnie liczę liczbę stron, które zawiera praca drukowania, i dodaję te informacje do zadania drukowania, które faktycznie zostało wysłane do drukarki. Aby to zrobić, "nadużywam" metodę PrintDocument.PrintPage. Po wykonaniu tej czynności mogę wydrukować "Strona 1/2 - Strona 2/2" itd.

Obecnie myślę o tym, aby poradzić sobie z tym w inny sposób. Wiem, które marginesy mam na stronie, takie jak nagłówek i stopka. Ergo, spacja między nagłówkiem i stopką to dostępna przestrzeń do drukowania informacji o artykule (nazwa, cena itp.). Jeśli obliczysz wysokość napisu (używając Graphics.MeasureString), mogę stwierdzić, kiedy artykuły zajmują więcej miejsca na stronie, która jest dostępna do drukowania.

Wcześniej drukowanie mogło potrwać nawet minutę, zanim faktyczne wysłanie do drukarki (biorąc pod uwagę, że klienci, którzy uruchamiają oprogramowanie, nie należą do najszybszych). Zaimplementowałem tę metodę, a drukowanie zajmuje teraz około 5-10 sekund. Jednak zastanawiam się, czy to jest droga. Nie mogę sobie wyobrazić, że jestem jedynym, który zajmuje się tym problemem; jak sobie z tym radzisz?

Jestem również otwarty na zupełnie różne podejścia.

+0

Być może można go wstępnie napisać w formacie pdf lub xps ans. Policz strony dokumentu. – TGlatzer

+0

@ Grumbler85 To byłaby opcja, ale wygenerowanie pliku PDF/XPS prawdopodobnie zajęłoby tyle samo czasu, co wykonanie suchego zadania drukowania. Mam wątpliwości co do twojego podejścia, ale będę o tym pamiętać. – Stefan

+0

Ponieważ większość drukarek dzisiaj jest w stanie drukować pliki PDF i XP bezpośrednio istnieje szansa, że ​​nie tracisz zbyt wiele czasu ... – TGlatzer

Odpowiedz

0

To, co robisz, brzmi jak droga. Ale ...

Można zamiast tego wypisać na XML i użyć XSLT, aby nadać styl wydrukowi, który będzie obsługiwał paginację. Zauważ, że wymagałoby to dość znacznego wysiłku refaktoryzacji, więc w zależności od twojej sytuacji jest to prawdopodobnie niewykonalne, ale jest to opcja.

Zapewniłoby to również pewną elastyczność w dalszej drodze, ponieważ zapewnia bardziej modularne podejście. Umożliwi to łatwiejsze dostarczanie innych opcji wyjściowych, takich jak HTML & PDF. Może to również ułatwić "podgląd wydruku".

+0

Dobra. Planuję zaprojektować portal internetowy, który zapewni klientom możliwość logowania i wyświetlania/pobierania faktur. Zapewniłoby to łatwy sposób wdrożenia takich opcji: moja własna odpowiedź wymagałaby trochę pracy, aby wydrukować faktury na stronie internetowej, podczas gdy opcja prawdopodobnie zapewniłaby łatwy sposób wdrożenia takich funkcji na stronie internetowej. Nie mam zamiaru jeszcze oznaczać twojej odpowiedzi jako odpowiedzi na moje pytanie, jestem ciekawy, co myślą o tym inni ludzie. – Stefan

Powiązane problemy