解決 C# System.Drawing.Printing 中無法設定紙張材質(紙張介質)的方法

2023-09-07

前言

最近在開發一套進銷存,要控制印表機從不同進紙匣中選取紙張,紙張類型分別為銅版紙和一班紙張,雖然 C# 中可以選擇進紙匣,但印表機驅動機制有問題,如果選了銅版紙且紙張大小為自訂,那因為印表機設計只能選擇後進紙倉,而再將紙張大小改為A5,進紙倉為紙匣時,印表機仍會從後進紙倉進紙,因為保存的紙張材質為銅版紙,以下分享如何解決這個問題

函數

capture_20230907223824639
翻看微軟官方文檔後會發現並沒有函式指定紙張材質,在過程中我試過了無數方法,因此不可能從代碼中下手,除非印表機驅動提供 API,後來看到 moible01 的某篇文章,忽然想到繞道的方法。

解決方法

方法非常簡單,只要讓電腦認為有兩台印表機,兩台印表機固定不同的參數,列印時根據要的參數調用對應的印表機即可

1.先查看印表機端口
螢幕擷取畫面 2023-09-07 230410
2.手動新增印表機
螢幕擷取畫面 2023-09-07 230443
3.依照以下步驟新增印表機 且新建新名稱
螢幕擷取畫面 2023-09-07 230521
螢幕擷取畫面 2023-09-07 230605
螢幕擷取畫面 2023-09-07 230632
螢幕擷取畫面 2023-09-07 230717
4.將兩台印表機設定固定的列印參數
螢幕擷取畫面 2023-09-07 230806

程式調用

在需要列印時選擇參數對應的印表機即可,如下
capture_20230907235122762

capture_20230907235047068