-
Data: 2009-07-06 11:55:08
Temat: Re: wydruk pliku PDF w Visual Studio
Od: "Wiesław Szahun" <a...@a...com.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Witam
Michoo <m...@v...pl> napisał(a):
> Ja bym albo czekał na zniknięcie zadania druku z kolejki przed wysłaniem
Dzięuję za podpowiedź, w pewnym sensie wykorzystałem Twój pomysł, a tak dla
potomnych wygląda to tak:
deklarujemy System.Diagnostics.Process, w StartInfo ustawiamy:
Filename=<ArcoRd32.exe z pełnąścieżką dostęu>,
Arguments = "/p /h "+nasz plik z pełną scieżką dostępu - > wówczas wysdruk
idzie na drukarkę domyślną; lub
Arguments ="/p /h /t"+nasz plik z pełną ścieżką + " " + nazwa drukarki
obowiązkowo w podwójnym czudzysłowiu (")
WorkingDirectory = <katalog w którym jest PDF>
ShellExecutu=false;
można jeszcze pomanipulować CreateNoWindow i WindowStyle według własnego
uznania
Teraz zadajemy Start() i WaitForExit(2000) (2000ms, bo u mnie wydruk średni
trwał około 1 do 1,2 sekundy) i włąściwie wszystko powinno być OK, a nie
jest bo AcrobatReader jest "be", i po zakończeniu wydruku nie kończy pracy
tylko sobie czeka (niewiadomo na co). Poza tym nie wiemy czy wydruk już sie
skończył, więc nie możemy zrobić Close() lub Kill(), bo może się okazać, że
raz będzie ok(bo dokument już trafioł do spoolera), ale innym razem już
nie(bo komputer obciążyło inne zadanie i wydruk trwał znacznie dłużej).
Problem rozwiązałem poprzez sprawdzenie czy w spoolerze drukarki znajduje
się już Job o nazwie mojego pliku, którego data jest póżniejsza niż start
procesu. Jesli zadanie wydruku już jest to można zabić proces i mamy
pewniość że wyjdzie nam dokument w takiej kolejności jaką sobie
założyliśmy.
Dlaczego nie spradamczy dokument jest już wydrukowany, jak doradzał
Michoo(jeszcze raz dzięki), bo umieszczenie dokumentów w spolerze trwa
znacznie szybciej, niż ich późniejszy wydruk, poza tym zawsze może
zabraknąć papieru i całą plikacja bedzie wisieć.
spooler sprawdzam poprzez wykorzystanie klas
System.Printing.LocalPrintServer, System.Printing.PrintQueue,
System.Printing.PrintJobInfoCollection, System.Printing.PrintSystemJobInfo.
I jeszcze uwaga, jeśli będziemy sprawdzać zawartość kolejki wydruku, nie
polecam robienie tego poprzez Refresh() - mii czasami to nie dizałało - nie
widział nowych zadań wydruku. Lepiej zawsze odczytać zadania poprzez
GetPrintJobInfoCollection().
pozdrawiam
Wiesław Szahun
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-12-28 Żerniki => Employer Branding Specialist <=
- 2024-12-28 ale zawziętość i cierpliwość
- 2024-12-27 most kilometrowy
- 2024-12-27 Dyplomaci a alkomaty
- 2024-12-27 Zmiana kary
- 2024-12-27 Chiński elektrolizer tester wody
- 2024-12-27 Rzeszów => System Architect (background deweloperski w Java) <=
- 2024-12-27 Kraków => Application Security Engineer <=
- 2024-12-27 Gorzów Wielkopolski => Konsultant wdrożeniowy Comarch XL/Optima (Ksi
- 2024-12-27 Wrocław => Solution Architect (Java background) <=
- 2024-12-27 kladka Zagorze
- 2024-12-27 Poznań => Key Account Manager (ERP) <=
- 2024-12-27 Gdańsk => Full Stack .Net Engineer <=
- 2024-12-27 Katowice => Programista Full Stack .Net <=