eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingwydruk pliku PDF w Visual Studio › Re: wydruk pliku PDF w Visual Studio
  • From: "Wiesław Szahun" <a...@a...com.pl>
    Newsgroups: pl.comp.programming
    References: <2...@n...home.net.pl>
    <h2pmkh$eq3$1@news.onet.pl>
    Subject: Re: wydruk pliku PDF w Visual Studio
    Date: Mon, 06 Jul 2009 13:55:08 +0200
    Message-ID: <e...@n...home.net.pl>
    MIME-Version: 1.0
    Content-Type: text/plain; charset="iso-8859-2"
    Content-Transfer-Encoding: 8bit
    X-Mailer: home.pl my.webmail
    X-Priority: 3
    X-NNTP-Posting-Host: c169-120.icpnet.pl
    NNTP-Posting-Host: 62.129.252.51
    X-Trace: news.home.net.pl 1246881308 62.129.252.51 (6 Jul 2009 13:55:08 +0200)
    Organization: home.pl news server
    Lines: 45
    X-Authenticated-User: artows@home
    Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.home.net
    .pl!not-for-mail
    Xref: news-archive.icm.edu.pl pl.comp.programming:182560
    [ ukryj 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


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: