2013-10-21 48 views
0

我正在創建PDF然後發送它們打印,我遇到的問題是我似乎無法捕捉到異常。我的代碼就是如下:ASP.net通過過程打印 - 捕捉異常

Try 
    Dim Process1 As New Process 
    Dim psi As New ProcessStartInfo("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe", "/t " + filenamehere+ " printerhere") 
    psi.UseShellExecute = False 
    Process1.StartInfo = psi 
    Process1.Start() 
    Process1.WaitForInputIdle() 
    Process1.CloseMainWindow() 

Catch ex As Exception 

    sendStatus = PrintStatus.ErrorPrinting 
End Try 

所以我試圖找出如果文件打印/如果到達打印機無論你想將它。

有沒有人知道這是可能的這種打印方式?如果沒有人知道一種方法能夠打印並捕獲錯誤,如果文件沒有打印。

+0

呃,在asp.net印刷只能做的您希望使用服務器可訪問的計算機進行打印的方式,您擁有網站的位置(本地計算機或本地網絡)。這是你想要的嗎?因爲您無法通過Internet在客戶端計算機上使用C#/ VB.NET(=服務器端代碼)進行打印。 – walther

+0

@walther這是通過本地網絡。我已將它連接到打印機,並且它會打印。如果說打印機不再連接,我只需要找到一種方法來獲取錯誤。所以它會試圖打印到不再存在的打印機。我需要一個錯誤說「打印錯誤」。如果這是有道理的。 – Ruddy

+0

如果是網絡打印機,您應該可以通過IP訪問它,例如嘗試發送ping並查看打印機是否仍在偵聽。不確定你是否可以確定文件是否已經打印,因爲..好吧,說實話,即使Windows經常與它鬥爭:) – walther

回答

0

你有沒有試過以下

Dim PSI As New ProcessStartInfo 
    PSI.FileName = filenamehere 
    PSI.Verb = "print" 
    PSI.Arguments = "" 
    PSI.UseShellExecute = True 
    PSI.CreateNoWindow = False 

    Using Report As Process = New Process 
     Report.StartInfo = PSI 
     Report.Start() 
     Report.WaitForExit() 

     ' Check Report.ExitCode here 

    End Using 

請記住,這個代碼寫在飛行中,因而未測試