Crystal Report 列印
用Crystal Report做完一張出餐單,想要送到不同的印表機做列印。
1. 安裝多台的印表機
2. ReportDocument 指定不同的印表機列印
當然你有很多手段能直接溝通印表機做列印,
ex:透過socket送指令給priter,根本不用再客戶機器上安裝N台印表機,
但是這代表著列印失敗的後處理你要自己做掉,
透過安裝的印表機就可以直接在印表機佇列執行Retry或是Delete,
相對地安裝N台印表機就是此種做法的缺點。
OS Win10
印表機 TYSSO PRP 300
【裝置和印表機】.【新增印表機】
直接點【我要的印表機未列出】
【以手動設定新增本機印表機或網路印表機】
如果你之前已經建過連接Port可以選【使用現有的連接埠】並從下拉選單選中選取
如果沒有建過就選【建立新的連接埠】,
主機跟印表機透過網路溝通【Standard TCP/IP Port】
主機跟印表機透過其他的Port溝通【Local Port】,正常主機上的Port,OS應該都已經建好了,在【使用現有的連接埠】清單中應該會看到
【主機名稱或IP位址】印表機的IP
【連接埠名稱】是之後會在【使用現有的連接埠】清單中看到的名字,並不是指Port號
【查詢印表機並自動選取要使用的驅動程式】因為已經有驅動的檔案了所以不勾
OS會嘗試著連接你設定的IP
連不上沒關係,請選【自訂】.【設定】
【通訊協定】請選擇【原始】
【連接埠號碼】9100
這些設定都是說明書上提供的,不同廠商的印表機請依各自文件做設定
【從磁片安裝】
【瀏覽】
找到廠商提供的.INF檔案
選擇型號【PRP-300】
出現這畫面代表你之前有安裝過,如果你版本太舊可以【取代目前的驅動程式】
【印表機名稱】很重要的名字,程式指定哪台印表機做列印就是看這個欄位
選擇【不共用印表機】
完成後會出現在【裝置和印表機】清單
using (var cryRpt = new ReportDocument())
{
var folder = Directory.GetCurrentDirectory();
// 報表檔案
var file = Path.Combine(folder, "SimpleReport.rpt");
// 載入報表
cryRpt.Load(file);
// 資料來源
var dataSource = this.FakeData();
// 設定資料來源
cryRpt.SetDataSource(dataSource);
// 指定印表機印出
var printer = new PrinterSettings();
// 裝置和印表機中的名字
printer.PrinterName = "PRP-300";
var printer2 = new PrinterSettings();
printer2.PrinterName = "PRP-300 (第二台)";
cryRpt.PrintToPrinter(printer, printer.DefaultPageSettings, false);
cryRpt.PrintToPrinter(printer2, printer2.DefaultPageSettings, false);
// 預設印表機
//cryRpt.PrintToPrinter(1, false, 0, 0);
}
最重要的PrinterSettings.PrintFileName 設對就可以了。
1. 安裝動作多次 ex: 3台PAD * 5台印表機 = 15(全部要安裝次數)
目前我並沒有比較好的解法。