我有一個應用程序根據用戶請求執行一些中央文件生成。一旦文件被創建,我想要做的就是將它們放在用戶的打印隊列中(在這個組織中有一箇中央打印隊列,用戶負責打印他們自己的文檔),以便他們可以當用戶準備好時打印出來。將作業添加到特定用戶的PrintQueue
通過在.net中使用System.Printing
程序集,我可以將作業添加到我自己的打印隊列中,所以我聽起來很有用。我打印的代碼如下所示:
private void RunPrintJob(string myFileName)
{
PrintServer ps = new PrintServer(@"\\printatron");
PrintQueue queue = new PrintQueue(ps, "psandqueues");
try
{
PrintSystemJobInfo pj = queue.AddJob(myFileName);
Stream myStream = pj.JobStream;
Byte[] myByteBuffer = GenerateBufferFromFile(myFileName); myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
myStream.Close();
}
catch (Exception ed)
{
Debug.WriteLine(ed.Message);
if (ed.InnerException != null)
{
Debug.WriteLine(" -> " + ed.InnerException);
}
result = false;
}
queue.Commit();
}
所以,我有我的中心創建的文檔,我知道哪些用戶是負責他們的創作,我可以將它們發送到打印機。
我現在需要的是一種將它們發送到打印機的方式,創建它們的用戶設置爲其用戶。有沒有辦法通過打印隊列來做到這一點?我知道它可以從PrintSystemJobInfo.Submitter
屬性讀取,但是它是隻讀的。如果沒有,我是否必須通過冒充來實現,如果是這樣,在後一種情況下,我可以做些什麼來避免存儲一堆用戶密碼,並且每次用戶更改密碼時軟件都會失敗?這似乎是一種非常笨拙的操作方式,但是由於此活動目前不是以交互方式執行,我還有其他選擇嗎?
我有興趣聽到這個答案,但同時我採取了不同的方法最終,因爲我找不到一種有用的方式來使用我有可用的工具在服務器上打印作業(包括.net 2.0,不知道是否System.Printing的東西在這裏有所幫助),所以我解決了這個問題,而是通過設置一個坐在後臺的本地應用程序,獲取打印的文檔並從用戶的機器打印出來,避免了任何權限問題。 – glenatron
那麼你想更新你的問題呢? –