2011-01-26 166 views
2

我有一個C#應用程序,當用戶單擊打印時,應用程序使用ITextSharp在內存流中創建一個PDF。我需要將此PDF自動打印到特定的打印機和紙盒。 我已經搜索過,但所有我能找到的是使用JavaScript,但它不打印到特定的托盤。 有沒有人有這樣做的例子? 謝謝。將PDF自動打印到特定的打印機和托盤

回答

1
+0

pdfprint是昂貴的,我真的需要一個免費的解決方案。 – twal 2011-01-26 19:12:00

+0

您可能會遇到麻煩,爲此找到免費解決方案。你可以嘗試一些免費的PDF庫,並分割文件,然後用正常的acrobate命令行工具將它們打印到不同的打印機上。但首先你必須能夠分割pdf文件。 – Remy 2011-01-27 08:44:56

+0

另一種商業解決方案稱爲Print&Share。它可以在打印機之間進行傳送,具有輪廓選擇功能,可以打印到不同的紙盒併合並所有紙盒。 – juFo 2017-02-09 10:41:20

2

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

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 :) 
1

在過去,我花了很多時間在網上搜索打印PDF文件到特定打印機托盤的解決方案。

我的要求是:從服務器目錄收集幾個pdf文件,並將每個文件發送到一個循環中的不同打印機托盤。

所以我測試了很多第三方工具(試用版)和在網上找到的最佳實踐。 通常,所有這些工具可以分爲兩個分類:a)以直接的方式將pdf文件發送到打印機(在UI中保持沉默)或b)使用內置的pdf預覽工具與.Net-PrintDocument一起在UI中打開pdf文件。

解決我的需求的唯一解決方案是來自veryPdf的PDFPrint(缺點:它不是無價的,但是我的公司購買了它)。所有其他工具和解決方案都沒有可靠的工作,這意味着:使用參數調用它們的打印例程。 id = 258(定義紙盒2;從已安裝的打印機取得),但打印PDF文件在紙盒3或pdf中打印預覽器(UI)中丟失圖像或完全空白的內容等等..

希望能幫到你一點點。