import java.awt.Font; import java.awt.Graphics; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.Arrays; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.standard.Copies; import javax.print.attribute.standard.Sides; import javax.swing.JOptionPane; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Printer class * @author 0404011 * */ public class Printer {<!-- --> private static final Logger logger = LoggerFactory.getLogger(Printer.class); \t private Printer() {<!-- --> //null } /** * Print the specified string through the printer * @param msg * @param ifTruncation */ public static void print(String msg,boolean ifTruncation) {<!-- --> \t\t //Construct the print request attribute set HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); \t\t pras.add(new Copies(1)); //number of copies pras.add(Sides.DUPLEX);//Single and double sides \t\t \t\t //Set the printing format. Because the type is not determined, autosense is selected. DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; \t\t // // Find all available printing services // PrintService[] printService = PrintServiceLookup.lookupPrintServices(flavor, pras); // Locate the default printing service // PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); \t\t PrintService service = PrintServiceLookup.lookupDefaultPrintService(); // PrintService[] printServices = PrinterJob.lookupPrintServices(); // for (int i = 0; i < printServices.length; i + + ) {<!-- --> logger.info(printServices[i].getName()); // // //"\\192.168.0.99\R&D Office Printer" // if (printServices[i].getName().contains("yanmade")) {//Default printer service // service = printServices[i]; // break; // } // } //Show print dialog // PrintService service = // ServiceUI.printDialog( // null, 200, 200, printServices, defaultService, flavor, pras); logger.info("Information to be printed" + msg); if (service != null) {<!-- --> try {<!-- --> DocPrintJob job = service.createPrintJob(); // Create a print job InputStream fis = new ByteArrayInputStream(msg.getBytes());//It can also be a file stream DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das); job.print(doc, pras); if(ifTruncation) printer(); } catch (Exception e) {<!-- --> String errorMsg = String.format("Error printing ng point data. error:%s", e); JOptionPane.showMessageDialog(null, errorMsg, "ERROR:", JOptionPane.ERROR_MESSAGE); logger.error("errorMeg:{},printData:{},error:{}",errorMsg,msg,e); } } else {<!-- --> JOptionPane.showMessageDialog(null, "Failed to print ng point data. Please set the default printer first, and then restart the host computer program."); } \t\t \t\t } \t private static void printer() {<!-- --> \t\t //The Book class provides a representation of the document. The pages of the document can use different page formats and page painters. Book book = new Book(); //Document to be printed \t\t //PageFormat class describes the page size and orientation to be printed PageFormat pf = new PageFormat(); //Initialize a page printing object pf.setOrientation(PageFormat.PORTRAIT); //Set the page printing direction, from top to bottom, from left to right \t\t //Set printing paper page information. Set the margins and printable area of the page through Paper. Must match the actual printing paper size. Paper paper = new Paper(); paper.setSize(10,30000);//paper size paper.setImageableArea(1,1,30,30000);//A4(595 pf.setPaper(paper); Printable p = new Printable() {<!-- --> @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {<!-- --> graphics.setFont(new Font("宋体",Font.BOLD,3)); graphics.drawString("", 20, 5); return PAGE_EXISTS; } }; \t\t book.append(p,pf); book.append(p, pf, 2); \t PrinterJob job = PrinterJob.getPrinterJob(); //Get the printing service object \t\t job.setPageable(book); //Set the printing class \t\t try {<!-- --> job.print(); } catch (PrinterException e) {<!-- --> String errorMsg = String.format("Error truncating printing paper. error:%s", e); JOptionPane.showMessageDialog(null, errorMsg, "ERROR:", JOptionPane.ERROR_MESSAGE); logger.error("errorMeg:{},error:{}",errorMsg,e); } \t\t \t\t } \t public static void main(String[] args) {<!-- --> // print("barcode:13241241234123;\r\\ errorStr:[59-60>300kohm,55-30>300kohm,23-24>300kohm,17-18>300kohm,17-19>300kohm,17- 46>300kohm]\r\\ "); \t\t String str = "barcode:000s11207028403201_P01\r\\ " // + // "errCode:OPEN\r\\ " + // "errStr:[59-60>300kohm,\r\\ " + // "\t7-2>300kohm,\r\\ " + // "\t25-26>300kohm,\r\\ " + // "\t33-34>300kohm]\r\\ " + // "\t\r\\ " + // "----------------------------------------\r\\ " + // "\r\\ " + // "barcode:000s11207028403201_P03\r\\ " + // "errCode:LEAK\r\\ " + // "errStr:[59-60>300kohm,\r\\ " + // "\t7-2>300kohm,\r\\ " + // "\t25-26>300kohm,\r\\ " + // "\t33-34>300kohm]" + // "\t\r\\ " + // "----------------------------------------\r\\ " + // "\r\\ " + // "barcode:000s11207028403201_P05\r\\ " + // "errCode:SILVER\r\\ " + // "errStr:[59-60>300kohm,\r\\ " + // "\t7-2>300kohm,\r\\ " + // "\t25-26>300kohm,\r\\ " + // "\t33-34>300kohm]" ; // print(str,false); // print(str,false); // print(str,false); // print(str,false); // print(str,true); String[] arr = ";OPEN;uSHORT;SILVER".split(";"); String[] arr1 = ";[29-89>300kohm, 29-90>300kohm];[23-2516ohm];[-F23_S24 + F83_S84, -F25_S26 + F85_S86, -F29_S30 + F89_S90, -F31_S32 + F89_S90, - F33_S34 + F89_S90, -F35_S36 + F89_S90]".split(";"); \t\t // System.out.println(); // System.out.println(); // String aa = "aa"; // System.out.println(aa); // System.out.println("------------------------------------------------ -------------"); // System.out.println( aa + "\r\\ \r\\ \r\\ " + aa ); \t\t System.out.println( ("Test board" + (1) + "Issue test command and start writing to 30401 register") ); \t\t System.out.println( Arrays.toString(Arrays.copyOf( new String [] {<!-- -->"a","b","c","d"} ,10)) ); \t\t //printer(); // System.out.println("\tfoo200Bbar"); // print("abcdasdfasdfsadf"); // System.out.println( DocFlavor.hostEncoding ); // DocFlavor [] arr = new DocFlavor [] {DocFlavor.STRING.TEXT_HTML,DocFlavor.STRING.TEXT_PLAIN // // ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_HOST ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8 // ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_16 ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_16BE // ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_16LE ,DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII // ,DocFlavor.INPUT_STREAM.TEXT_HTML_HOST ,DocFlavor.INPUT_STREAM.TEXT_HTML_UTF_8 // ,DocFlavor.INPUT_STREAM.TEXT_HTML_UTF_16 ,DocFlavor.INPUT_STREAM.TEXT_HTML_UTF_16BE // ,DocFlavor.INPUT_STREAM.TEXT_HTML_UTF_16LE ,DocFlavor.INPUT_STREAM.TEXT_HTML_US_ASCII // ,DocFlavor.INPUT_STREAM.PDF ,DocFlavor.INPUT_STREAM.POSTSCRIPT // ,DocFlavor.INPUT_STREAM.PCL ,DocFlavor.INPUT_STREAM.GIF // ,DocFlavor.INPUT_STREAM.JPEG ,DocFlavor.INPUT_STREAM.PNG // ,DocFlavor.INPUT_STREAM.AUTOSENSE ,DocFlavor.INPUT_STREAM. ,DocFlavor.INPUT_STREAM. ,DocFlavor.INPUT_STREAM. ,DocFlavor.INPUT_STREAM. ,DocFlavor.INPUT_STREAM. // }; \t\t // for (int i = 0; i < arr.length; i + + ) {<!-- --> // // PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); // aset.add(MediaSizeName.ISO_A4); // PrintService[] pservices = // PrintServiceLookup.lookupPrintServices(arr[i], null); // System.out.println(arr[i].toString() + ",," + Arrays.toString(pservices)); // // } \t\t \t\t // DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_HTML_HOST; // PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); // aset.add(MediaSizeName.ISO_A4); \t\t // System.out.println(PrintServiceLookup.lookupDefaultPrintService().toString()); // PrintService[] pservices = // PrintServiceLookup.lookupPrintServices(null,null); // // for (int i = 0; i < pservices.length; i + + ) {<!-- --> // System.out.println( pservices[i].toString() + ",," + // Arrays.toString(pservices[i].getSupportedDocFlavors()) ); // } // // System.out.println(Arrays.toString(pservices)); // // DocFlavor[] tArr = PrintServiceLookup.lookupDefaultPrintService().getSupportedDocFlavors(); // for (int i = 0; i < tArr.length; i + + ) {<!-- --> // System.out.println(tArr[i].toString()); // } \t\t // // System.out.println( Arrays.toString(PrintServiceLookup.lookupDefaultPrintService().getSupportedDocFlavors()) ); \t\t } \t }