我正在編寫一個作爲Windows服務運行的服務器,該服務通過請求調用Firefox來生成網頁的pdf快照。在Windows服務模式下運行GUI應用程序
我知道這是一個壞主意來運行服務模式的GUI程序,但我的程序的服務器從本質在用戶模式下運行它限制。運行用戶級「代理」也不是一種選擇,因爲在運行服務器的機器上可能沒有登錄交互式用戶。
在我的實驗Firefox的成功製作PDF時,該服務在一個已經登錄的用戶帳戶下運行。顯然,在其他情況下它不起作用:用於未登錄的本地系統和用戶帳戶。在啓用「允許服務與桌面交互」選項的LocalSystem下,我可以看到Firefox開始報告無法找到打印機。
因爲它不會是實際的需要爲PDF服務器運行一個打開的用戶會話,有沒有除了從虛擬機中運行整個事情的任何解決方法嗎?
更新:我覺得這個問題並不是真正用於帳戶權限,而是FF在服務模式下運行時等待的隱形模式對話框。
但是,當FF在LocalSystem帳戶下運行時,它仍然無法創建pdf。 FF說它找不到打印機,我想知道這是否可以以某種方式啓用的權限?
+1嚴重的是,正如kzen所說的,你真的應該考慮使用一個創建pdf的組件,而不是打開一個GUI應用來完成它。如果這可以由多個用戶調用,那麼你正在乞求麻煩。大多數GUI應用程序不是爲這種情況而構建的,許多人只是爲了遇到爭用問題而走上這條路。 不要爲他們埋單,但Aspose有許多爲這種場景構建的組件,作爲PDFSharp的另一個候選者。 我也總是問「爲什麼PDF」?對於人們來說,這是一個默認的答案,因此他們通常不會問一個更簡單的格式是否可行。 – 2010-04-13 21:06:19
不知道原始海報需要什麼,這種解決方案不適用於「瀏覽器」類的情況。如果項目的要點是概述頁面的外觀,那麼使用PDF生成器並不是一個好的選擇。 – 2010-04-14 08:37:50
你是對的,基督徒。問題是我需要在將結果保存爲PDF之前首先進行可能的閃存和啓用js的頁面的有效渲染。這意味着我應該堅持使用像Gecko或Webkit這樣的現有引擎,或者自己寫。幸運的是,使用'cmdlnprint'附加組件的FF解決了這兩個問題。但將這個捆綁服務作爲服務運行是主要挑戰。 – Leonid 2010-04-16 20:39:17