94 lines
3.2 KiB
Plaintext
94 lines
3.2 KiB
Plaintext
|
|
package com.nationalelectirc.utils;
|
|||
|
|
import java.awt.print.PrinterJob;
|
|||
|
|
import java.io.IOException;
|
|||
|
|
import java.io.InputStream;
|
|||
|
|
import java.net.HttpURLConnection;
|
|||
|
|
import java.net.URL;
|
|||
|
|
import java.net.URLConnection;
|
|||
|
|
|
|||
|
|
import javax.print.Doc;
|
|||
|
|
import javax.print.DocFlavor;
|
|||
|
|
import javax.print.DocPrintJob;
|
|||
|
|
import javax.print.PrintException;
|
|||
|
|
import javax.print.PrintService;
|
|||
|
|
import javax.print.SimpleDoc;
|
|||
|
|
import javax.print.attribute.HashPrintRequestAttributeSet;
|
|||
|
|
import javax.print.attribute.PrintRequestAttributeSet;
|
|||
|
|
import javax.print.attribute.standard.Copies;
|
|||
|
|
import javax.print.attribute.standard.OrientationRequested;
|
|||
|
|
import javax.print.attribute.standard.Sides;
|
|||
|
|
|
|||
|
|
public class PrintUtil {
|
|||
|
|
public static void main(String[] argv) throws Exception {
|
|||
|
|
String filePath ="http://192.168.0.218:8888/sealFile/image/nWSImageDes/11-3e2bfdccefae446ebf95f8901deb1a76-WaterMark.png";
|
|||
|
|
String printerName = "jysoft11111";//打印机名包含字串
|
|||
|
|
|
|||
|
|
URL url =new URL(filePath); // 创建URL
|
|||
|
|
URLConnection urlconn = url.openConnection(); // 试图连接并取得返回状态码
|
|||
|
|
urlconn.connect();
|
|||
|
|
HttpURLConnection httpconn =(HttpURLConnection)urlconn;
|
|||
|
|
if(httpconn.getResponseCode() != HttpURLConnection.HTTP_OK) {
|
|||
|
|
System.out.print("无法连接到目标文件");
|
|||
|
|
} else {
|
|||
|
|
urlconn.getInputStream();
|
|||
|
|
InputStream inputStream = urlconn.getInputStream();
|
|||
|
|
JPGPrint(inputStream,printerName);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 传入文件和打印机名称
|
|||
|
|
public static void JPGPrint(InputStream fis,String printerName) throws PrintException {
|
|||
|
|
try {
|
|||
|
|
// 设置打印格式,如果未确定类型,可选择autosense
|
|||
|
|
DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG;
|
|||
|
|
// 设置打印参数
|
|||
|
|
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
|
|||
|
|
aset.add(new Copies(1)); //份数
|
|||
|
|
aset.add(OrientationRequested.LANDSCAPE);
|
|||
|
|
//aset.add(MediaSize.ISO.A4); //纸张
|
|||
|
|
// aset.add(Finishings.STAPLE);//装订
|
|||
|
|
aset.add(Sides.DUPLEX);//单双面
|
|||
|
|
// 定位打印服务
|
|||
|
|
PrintService printService = null;
|
|||
|
|
if (printerName != null) {
|
|||
|
|
//获得本台电脑连接的所有打印机
|
|||
|
|
PrintService[] printServices = PrinterJob.lookupPrintServices();
|
|||
|
|
if(printServices == null || printServices.length == 0) {
|
|||
|
|
System.out.print("打印失败,未找到可用打印机,请检查。");
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
//匹配指定打印机
|
|||
|
|
for (int i = 0;i < printServices.length; i++) {
|
|||
|
|
System.out.println(printServices[i].getName());
|
|||
|
|
if (printServices[i].getName().contains(printerName)) {
|
|||
|
|
printService = printServices[i];
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(printService==null){
|
|||
|
|
System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// fis = new FileInputStream(file); // 构造待打印的文件流
|
|||
|
|
Doc doc = new SimpleDoc(fis, flavor, null);
|
|||
|
|
DocPrintJob job = printService.createPrintJob(); // 创建打印作业
|
|||
|
|
job.print(doc, aset);
|
|||
|
|
} catch (Exception e1) {
|
|||
|
|
e1.printStackTrace();
|
|||
|
|
} finally {
|
|||
|
|
// 关闭打印的文件流
|
|||
|
|
if (fis != null) {
|
|||
|
|
try {
|
|||
|
|
fis.close();
|
|||
|
|
} catch (IOException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|