Java讀取打印機自定義紙張.


打印出現截斷?


對於自定義紙張打印, 一定要先在打印機配置那邊添加, 不然會出現截斷.

例如打印1000*500, 出來是正常的, 打印216*139, 出現了截斷.

因為java默認的打印, 會從打印機紙張里尋找相近的紙張進行匹配,

如果沒有添加自定義紙張, 可能找出來的是別的紙張.

 

添加自定義紙張


分為兩種

打印機支持直接自定義紙張設置

打開控制面板, 選擇查看設備和打印機, 選中指定打印機, 右鍵打印機首選項.

在紙張規格后面可以直接添加自定義紙張.

打印機不支持直接設置

例如Windows自帶的Microsoft XPS Document Writer, 右鍵打印機首選項里是沒有自定義紙張的.

這時可以通過選中打印機, 點擊菜單欄上方的打印機服務器屬性, 勾選 創建新紙張規格. 最后記得要點 保存規格.

 

Java讀取自定義紙張


 

通過java直接調用打印機, 彈出來打印機設置窗口, 里面有個選擇打印機以及紙張的界面.

既然java自帶的對話框里可以讀到, 我們可以到他的源碼里直接摘抄一下.

源碼位於sun.print.ServiceDialog.

1         PrintService printer = PrintServiceLookup.lookupDefaultPrintService();
2         Media[] objs = (Media[]) printer.getSupportedAttributeValues(Media.class, null, null);
3         for (Media obj : objs) {
4             if (obj instanceof MediaSizeName) {
5                 System.out.println("紙張型號:" + obj);
6             } else if (obj instanceof MediaTray) {
7                 System.out.println("紙張來源:" + obj);
8             }
9         }

 log結果如下

 注意: java讀取紙張有個限制, 那就是默認紙張 高度 >= 寬度.

如果設置了100*50的紙張, 是讀不到的, 因為他默認這個是50*100的橫向展示.

 

若需要打印自定義紙張, 參加另外一篇博客 使用PDFBox打印自定義紙張的PDF

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM