Java triggers printer printing

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
}