2012-01-20 179 views
1

打印作業過程中是否有辦法切換打印機紙盒?我被要求制定一個選擇/包裝計劃。他們希望在一張彩色紙上打印庫存揀貨單,包裝紙要放在白紙上,他們希望將其妥善整理(挑選,打包,打包,打包,打包,挑選,打包,打包,打包,包; ...)。在打印作業中更換打印機紙盒

我在設置默認紙盒時發現了一些其他線程,但在作業期間沒有在交替紙盒上找到任何東西。也許我不是在尋找正確的東西。

不知道它是否有所作爲,但我們的打印機是HP 3015n,客戶端將是XP和Win 7 Pro。

+0

abatishchev - 看到您編輯我的文章。開發環境和編程語言不相關嗎? – Sam

+0

https://www.youtube.com/watch?v=6iXuU4b5mh4&t=25s? :-) – juFo

回答

3

你可以嘗試這樣的事情,你必須從項目中引用System.Drawing.dll - >參考 - >添加

//Namespace: System.Drawing.Printing 
//Assembly: System.Drawing (in System.Drawing.dll) 

PrintDocument printDoc = new PrintDocument(); 
PaperSize oPS = new PaperSize(); 
oPS.RawKind = (int)PaperKind.A4; 
PaperSource oPSource = new PaperSource(); 
oPSource.RawKind = (int) PaperSourceKind.Upper; 

printDoc.PrinterSettings = new PrinterSettings(); 
printDoc.PrinterSettings.PrinterName = sPrinterName; 
printDoc.DefaultPageSettings.PaperSize = oPS; 
printDoc.DefaultPageSettings.PaperSource = oPSource; 
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage); 
printDoc.Print(); 
printDoc.Dispose(); 
+0

因此,基本上我會創建數百個小型印刷品並在作業之間更改紙張來源? – Sam

+0

沒有機會測試,看看它是否有效,但它可能,而且遠遠超過我自己做的。由於沒有其他人在幾天內發表過評論,我會標記爲答案。謝謝! – Sam

+1

對不起,我無法使用這種方法來更換同一作業中的托盤。我在printDoc_PrintPage中更換紙盒。它似乎忽略了這種變化......完全有效的實施的任何機會? – CarneyCode

0

據我所知沒有 - 你必須在基本上只有你使用的隊列上提交2個作業。

+0

不知道我跟着,你能詳細點嗎?謝謝。 – Sam

+0

2種不同紙盒的紙張類型名稱是什麼 – MethodMan

+0

不確定紙張類型是什麼意思?紙盒1的顏色爲8.5x11,紙盒2的顏色爲8.5x11。 – Sam

0

您可以更改打印機紙盒與此代碼。

string _paperSource = "TRAY 2"; // Printer Tray 
string _paperName = "8x17"; // Printer paper name 

//Tested code comment. The commented code was the one I tested, but when 
//I was writing the post I realized that could be done with less code. 

//PaperSize pSize = new PaperSize() //Tested code :) 
//PaperSource pSource = new PaperSource(); //Tested code :) 

/// Find selected paperSource and paperName. 
foreach (PaperSource _pSource in printDoc.PrinterSettings.PaperSources) 
{ 
    if (_pSource.SourceName.ToUpper() == _paperSource.ToUpper()) 
    { 
     printDoc.DefaultPageSettings.PaperSource = _pSource; 
     //pSource = _pSource; //Tested code :) 
     break; 
    } 
} 

foreach (PaperSize _pSize in printDoc.PrinterSettings.PaperSizes) 
{ 
    if (_pSize.PaperName.ToUpper() == _paperName.ToUpper()) 
    { 
     printDoc.DefaultPageSettings.PaperSize = _pSize; 
     //pSize = _pSize; //Tested code :) 
     break; 
    } 
} 

//printDoc.DefaultPageSettings.PaperSize = pSize; //Tested code :) 
//printDoc.DefaultPageSettings.PaperSource = pSource; //Tested code :) 
相關問題