我的問題是:我使用ghostscript將一些pdf轉換爲jpeg文件,然後將它們渲染成silverlight控件。我轉換使用PDF文件:Ghostscript崩潰服務器
public void PdfToJpg(string ghostScriptPath, string input, string output) {
timer1.Enabled = true;
//if the pdf has more than 1 file (ex. 3) then 3 jpeg files will be outputed
String ars = "-dNOPAUSE -sDEVICE=jpeg -r300 -o" + output + "-%d.jpeg " + input;
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = ars;
startInfo.FileName = ghostScriptPath;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
using (Process exeProcess = Process.Start(startInfo)) {
exeProcess.WaitForExit();
}
}
然後保存會話中的頁碼和到字典中的頁面的byte [],字典和一個Silverlight的支持服務發送它,並把它們發送到ASPX頁面包含Silverlight控件(使用Response.redirect(page.aspx))。一切正常,但有時服務器(卡西尼或IIS)崩潰,這意味着文件被轉換,但重定向從不發生,只是頁面保持加載狀態。我必須用「結束進程」關閉cassini或重新啓動IIS服務器,以使進程再次運行。我不認爲問題是與服務,因爲我有一個類似的過程發送到silverlight應用一個字節[]的音頻文件,一切正常,服務器永遠不會卡住,所以我認爲這是因爲ghostscript ..如果有人有任何想法。另外我使用elmah,並沒有錯誤報告...當在調試時,當我點擊視圖按鈕,其中包含轉換和其他部分的過程它不會進入點擊事件,但轉換完成(不是重定向),我不知道這怎麼可能......謝謝。所以可以肯定的是一些與ghostscript的
UPDATE: 我改變了我的代碼:
using (Process convertProc = new Process()) {
convertProc.StartInfo.FileName = ghostScriptPath;
convertProc.StartInfo.Arguments = args;
//convertProc.StartInfo.UseShellExecute = false;
//convertProc.StartInfo.RedirectStandardOutput = true;
convertProc.StartInfo.CreateNoWindow = true;
convertProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
convertProc.Start();
ThreadedKill(convertProc.Id);
convertProc.PriorityClass = ProcessPriorityClass.Normal;
convertProc.WaitForExit();
}
如果useshellexecute和redirectoutput被註釋掉服務器變爲「野生」有時,如果沒有,代碼運行完美每次,但是這個從ghostscript進程出現的窗口,我不想那樣。爲了不出現,我必須評論這行或將useshellexecute設置爲true,並評論redirectoutput,這有時會導致失敗。我能做什麼?什麼是redirectStandardOutput和它是什麼... ...不知道在MSDN ...
更新2: 更改我的gswin64.exe gswin64c.exe爲控制檯應用程序,現在我說的窗口isn再也沒有出現。無碼瘋了......,至少目前還沒有..
要解決這個問題,您可能需要提供有關錯誤的更多特定信息,例如一個堆棧跟蹤或至少一個Windows錯誤代碼的異常。事件日誌中記錄了什麼? –
這是問題,沒有例外,事件查看器中沒有錯誤,沒有任何錯誤,在TaskManager中,gswin64.exe在掛起時不運行。 – adi1989
GPL Ghostscript 9.06(2012-08-08)gswin64.exe – adi1989