1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 设置纸张大小设置_Java读取打印机自定义纸张.

java 设置纸张大小设置_Java读取打印机自定义纸张.

时间:2023-12-24 18:22:45

相关推荐

java 设置纸张大小设置_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 instanceofMediaSizeName) {5 System.out.println("纸张型号:" +obj);6 } else if (obj instanceofMediaTray) {7 System.out.println("纸张来源:" +obj);8 }9 }

log结果如下

注意: java读取纸张有个限制, 那就是默认纸张 高度 >= 宽度.

如果设置了100*50的纸张, 是读不到的, 因为他默认这个是50*100的横向展示.

若需要打印自定义纸张, 参加另外一篇博客

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。