我有一个运行在linux上的java程序,通过读取PDF文件并发送到打印机的9100端口进行打印。 现状: PDF已经设定纸张大小为A6 打印机的纸盘1里放入A6纸,打印机纸盘1纸张尺寸为任意尺寸。 打印结果为:PDF内容在A6纸的下半部分,相当于A4纸的中央部分打印了PDF的内容。 如果: 将打印机纸盘1纸张尺寸设定为A6,则PDF内容可以完整打印到A6纸上。 想要: ...
查看更多...
我有一个运行在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打印效果,右边是windows直接打印PDF的效果 下面是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();
}
}