- 将帖子标记为未读
- 将此主题添加到书签
- 订阅此主题
- 禁止
- 订阅此主题的 RSS 提要
- 高亮显示此贴
- 打印此贴
- 标记帖子
打印机通过程序写PDF字节数组到HP LaserJet Pro 4004dn的9100端口,不能识别纸张大小,怎么样编程?
发布时间 2024-10-14 17:18:50 - 上次修改时间 2024-10-14 19:37:53
产品名称: HP LaserJet Pro 4004dn
操作系统: Linux
我有一个运行在linux上的java程序,通过读取PDF文件并发送到打印机的9100端口进行打印。
- 现状:
PDF已经设定纸张大小为A6
打印机的纸盘1里放入A6纸,打印机纸盘1纸张尺寸为任意尺寸。
打印结果为:PDF内容在A6纸的下半部分,相当于A4纸的中央部分打印了PDF的内容。
- 如果:
将打印机纸盘1纸张尺寸设定为A6,则PDF内容可以完整打印到A6纸上。
- 想要:
打印机纸盘1的尺寸设定为任意尺寸。打印A6 PDF时,可以正常打印在A6纸上。如果要修改java程序,请告知怎样修改,比如在发送PDF之前,向打印机发送什么样的指令或报文。前提条件是,打印机的设定不可以修改,只能修改java程序。
左边是java打印的效果,右边是windows直接打印的效果
下面是java代码
public static void main(String[] args) {
try {
Socket socket = new Socket("192.168.0.57", 9100);
OutputStream out = socket.getOutputStream();
// 发送设置纸张类型为A6的PCL命令,设不设定效果一样
// String pclCommand = "\u001B&l27A";
// out.write(pclCommand.getBytes());
// 发送PDF数据
FileInputStream fis = new FileInputStream("D:/pdf/a6.pdf");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
fis.close();
out.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
1 条回复1