Java读取打印机自定义纸张.
打印出现截断?
对于自定义纸张打印, 一定要先在打印机配置那边添加, 不然会出现截断.
例如打印1000*500, 出来是正常的, 打印216*139, 出现了截断.
因为java默认的打印, 会从打印机纸张里寻找相近的纸张进行匹配,
如果没有添加自定义纸张, 可能找出来的是别的纸张.

添加自定义纸张
分为两种
打印机支持直接自定义纸张设置
打开控制面板, 选择查看设备和打印机, 选中指定打印机, 右键打印机首选项.
在纸张规格后面可以直接添加自定义纸张.

打印机不支持直接设置
例如Windows自带的Microsoft XPS Document Writer, 右键打印机首选项里是没有自定义纸张的.
这时可以通过选中打印机, 点击菜单栏上方的打印机服务器属性, 勾选 创建新纸张规格. 最后记得要点 保存规格.

Java读取自定义纸张
通过java直接调用打印机, 弹出来打印机设置窗口, 里面有个选择打印机以及纸张的界面.

既然java自带的对话框里可以读到, 我们可以到他的源码里直接摘抄一下.
源码位于sun.print.ServiceDialog.
PrintService printer = PrintServiceLookup.lookupDefaultPrintService();
Media[] objs = (Media[]) printer.getSupportedAttributeValues(Media.class, null, null);
for (Media obj : objs) {
if (obj instanceof MediaSizeName) {
System.out.println("纸张型号:" + obj);
} else if (obj instanceof MediaTray) {
System.out.println("纸张来源:" + obj);
}
}
log结果如下

注意: java读取纸张有个限制, 那就是默认纸张 高度 >= 宽度.
如果设置了100*50的纸张, 是读不到的, 因为他默认这个是50*100的横向展示.
若需要打印自定义纸张, 参加另外一篇博客 使用PDFBox打印自定义纸张的PDF
Java读取打印机自定义纸张.的更多相关文章
- Java调用PDFBox打印自定义纸张PDF
打印对象 一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件. PageFormat 默认PDFPrintable无法设置页面大小. PDFPrintable print ...
- Java实现POS打印机自定义无驱打印
Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...
- 利用ActiveX实现web页面设置本地默认打印机、纸张大小
通常web技术无法设置本地计算机的默认打印机,包括用代码设置纸张大小,如果业务系统中真遇到这种需求,只能通过其它辅助手段(比如ActiveX)实现.下面这段代码,出自网上被广泛使用的"泥人张 ...
- c# PrintDocument 设置自定义纸张大小的示例
.Net 提供的打印类PrintDocument 非常简洁易用,不过在实际应用开发中往往需要对纸张进行自定义,尤其是需要进行票据打印时.这个问题也困扰了我许久,经过查阅相关的资料和多次尝试,发现 其实 ...
- [Q]自定义纸张大小
问:当打印机纸张列表里没有符合要求的纸张大小,例如如何打印加长图?答:当打印非标准图框时,你可能在图纸列表里找不到想要纸幅.你需要自己新建你需要的纸幅,以pdfFactory虚拟打印机为例(其它打印机 ...
- Java读取并下载网络文件
CreateTime--2017年8月21日10:11:07 Author:Marydon import java.io.ByteArrayOutputStream; import java.io ...
- C#调用windows api控制打印机 状态获取 打印 自定义纸张 完整版
using System; using System.Text; using System.Runtime.InteropServices; using System.Security; using ...
- Java读取CSV和XML文件方法
游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
随机推荐
- 轻松学会ES6新特性之生成器
生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...
- 数据分析基础之Linalg的使用
Linear algebra 简介 When SciPy is built using the optimized ATLAS LAPACK and BLAS libraries, it has ve ...
- Leetcode题解(二)
4.Median of Two Sorted Arrays(*) 题目 题目要求找到两个排序数组的中位数. 中位数的定义:当n为奇数时,median = array[n/2];当n为偶数时,media ...
- 常见的XSS攻击代码
第一类: <tag on*=*/> 在html标签事件中触发,典型的是on*事件,但是这种触发模式的缺陷在于不能直接触发所以更多的需要配合使用. eg: 1.使html元素占据整个显示页面 ...
- 微信支付——openid获取不到
1.写微信支付遇到状况,通过wx.login获取code,然后向微信服务器获取openid,获取失败:{"errcode":40029,"errmsg":&qu ...
- web前端-----第一弹html
HTML 初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s ...
- [转]ORACLE递归查询
转自:http://www.oracle.com/technetwork/cn/articles/hartley-recursive-086819-zhs.html 递归数据库处理,也称为材料清单 或 ...
- C#参考之sealed密封类(转)
C# 语言参考 sealed(C# 参考) 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承.在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承. 1 ...
- react 体验 react与vue的比较
用了 vue 大半年了,不过我在2016年暑假的时候就看到了 react 这个项目,有点想学习一番,之前学习的都是基础语法和一些基础用法吧,总的来说 mvvm 框架确实都很相似,会一个就可以了; 今天 ...
- 转载--Typecho install.php 反序列化导致任意代码执行
转载--Typecho install.php 反序列化导致任意代码执行 原文链接(http://p0sec.net/index.php/archives/114/) 0x00 前言 漏洞公布已经过去 ...