Prefacio
Recientemente, la impresora se utilizó en el proyecto. Al principio no lo entendí, pero ahora lo he hecho, así que lo he resumido. Este artículo incluye la impresión de llamadas de fondo (dos maneras) y la impresión JS front-end, pero solo es decir, ahora admite la impresión. Además, si desea conectar de forma remota la impresora, la generación de códigos QR y operar directamente por los comandos de la impresora, debe modificar la configuración de seguridad del navegador. Aquí hay una introducción detallada.
El primer tipo de impresión de fondo:
Use la clase PrintServiceLookup en Javax para imprimir. Puede llamar directamente a la impresora predeterminada, o puede usar los siguientes métodos para filtrar e imprimir:
PrintServiceLookUp.lookupMultidOcPrintServices (sabores, atributos);
El código ejecutable es el siguiente:
public static void main (string [] args) {fileInputStream textStream = null; intente {textStream = new FileInputStream ("dirección"); } catch (FileNotFoundException e) {E.PrintStackTrace (); } if (textstream! = null) // Cuando el contenido de impresión no está vacío {// especifica el formato de formato DocFlake Flavor = docflavor.input_stream.pdf; // Service_Formatted.printable // Posicione el servicio de impresión predeterminado imprime printservice = printServicePeP.lookupdefaultPrintservice (); // Crear un trabajo de impresión DocPrintJob Job = printService.CreatePrintJob (); // Establecer el atributo de impresión PrinTruCeSTATTRIBUSET PRAS = new HashPrinTuCeSTATTRIBUSET (); // Establecer el tamaño del papel, también puede crear una nueva clase MediaSize para personalizar el tamaño Pras.add (MediaSizename.ISO_A4); Docatributeset das = new HashDocatTributeset (); // especificar el contenido de impresión DOC doc = new Simpledoc (TextStream, Flavor, Das); // No muestre el cuadro de diálogo Imprimir, imprimir trabajo directamente intente {Job.print (doc, PRAS); // realizar operaciones de impresión específicas en cada página} Catch (PrintException PE) {PE.PrintStackTrace (); }} else {// Si el contenido de impresión está vacío, solicite al usuario que imprima cancelará joptionPane.showConfirmDialog (nulo, "Lo siento, el trabajo de la impresora está vacío, imprima cancelado!", "vacío", jOptionPane.default_option, jOptionPane.Warning_Message); }} El segundo tipo de impresión de fondo:
Nota: El segundo y tercer tipos de impresión usan comandos de impresora para funcionar. Aquí necesita el paquete JNA JAR, y JDK requiere 32 bits, y el DLL correspondiente debe registrarse. Para diferentes sistemas, los DLL deben estar registrados en diferentes ventanas. Después de un registro exitoso, se requiere Win+R, y se llama y se ejecuta Regsvr32.exe tscactiveX.dll.
El código ejecutable es el siguiente:
clase pública JavadeMo {interfaz public tsclibdll extiende la biblioteca {tsclibdll instancia = (tsclibdll) national.loadLibrary ("tsclib", tsclibdll.class); int aproximadamente (); int OpenPort (String pianoname); intsecort (); int sendCommand (String PrinterCommand); Int Configuración (ancho de cadena, altura de cadena, velocidad de cadena, densidad de cadena, sensor de cadena, vertical de cadena, desplazamiento de cadena); int descargarpcx (string filename, string image_name); int Barcode (cadena x, cadena y, tipo de cadena, altura de cadena, legible con cadena, rotación de cadena, cadena estrecha, cadena amplia, código de cadena); int imprinterfont (string x, string y, string fontType, rotación de cadena, string xmul, string ymul, string text); int clearBuffer (); int printLabel (sting set, string copy); int formFeed (); int nobackfeed (); int windowsfont (int x, int y, int fontheight, int rotation, int fontStyle, int fontunderline, string szfaceName, string content); } public static void main (string [] args) {System.SetProperty ("JNA.Encoding", "GBK"); // Soporte de chino SimpledateFormat df = new SimplEdateFormat ("yyyy-mm-dd HH: mm: ss"); String time = df.format (new Date ()); Cadena qrcode = "PD102011"; Tsclibdll.instance.openport ("tsc ttp-244 pro"); // imprime modelo tsclibdll.instance.setup ("70", "40", "5", "8", "0", "2", "0"); Tsclibdll.instance.clearBuffer (); Comando de cadena = "Qrcode 120,90, Q, 8, A, 0, M1, S7,/" " + Qrcode +"/""; // Imprima los parámetros y contenido del código QR tsclibdll.instance.sendCommand (comando); // Comando de transferencia tsclibdll.instance.sendCommand ("Texto 300 70 36 0 0 0 Arial"+ "Papel de etiqueta de suministros de oficina"); //Tsclibdll.instance.windowsfont(300, 70, 36, 0, 0, 0, "Arial", "Papel de laboratorio de suministros de oficina"); Tsclibdll.instance.printlabel ("1", "1"); Tsclibdll.instance.cloSeport (); }} Nota: Este método de impresión requiere una conexión USB (TTP-244 Pro). Si desea generar en línea y conectarse de forma remota, debe usar el tercer método.
El tercer tipo de impresión JS
Al imprimir usando JS, el navegador se restringe principalmente. Actualmente, solo es decir, el navegador lo admite. Al imprimir, el servidor de automatización no puede crear objetos en la consola. Ajuste la configuración relevante en ActiveX en el nivel personalizado en la seguridad del navegador para habilitar. El código es el siguiente:
<script type = "text/javaScript"> function printqrCode () {var tscobj = new ActiveXObject ("tscactiveX.tsclib"); // dll utilizado por la impresora //tscobj.activexabout (); // Información de la impresora tscobj.activexopenport ("tsc ttp-244 pro"); // nombre de impresora, no se puede escribir incorrectamente //tscobj.activexdownloadpcx ("d:/myEClipseProject/filesManager/trunk/doc/02-reference/03-QR Code Printer/01-de-de-desarrollo Help/Php Callp Callp Callp/Trunk/Doc/02-Reference/03-Qr Code Printer/01-DEBRODEL Ejemplo/tscactivex.dll-php-exame/"," 123.pcx "); Tscobj.activexSetUp ("70", "40", "4", "15", "0", "2.5", "0"); // Configuración de impresión // tscobj.activexsetup ("ancho de etiqueta", "altura de etiqueta", "velocidad de impresión", "densidad de impresión (0-15)", "Categir de sensor tipo, 0 medios usando un sensor de distancia vertical, 1, 1 (vela de impresión", "densidad de black (0-15)", "Tipo de categoría de sensor, 0 medios usando un sensor de distancia vertical, 1, 1 (1 vía de impresión (1 densidad (0-15)", "Sensor Categy Type, 0 medios usando un sensor de distancia VERTICAL, 1, 1 (1 vía de impresión (1 (0-15)", "Sensor Cadena de Cadena, 0 medir un sensor de distancia VERTICAL, 1, 1, 1. senso) "," Gap/Black Mark Spacing vertical (mm) "," Distancia de desplazamiento de la marca GAP/Black (mm) "); //Tscobj.activexformFeed (); //Tscobj.activexnobackfeed (); Tscobj.activExsendCommand ("Dirección 1"); // Establecer la dirección de la etiqueta, dirección 1 esquina superior izquierda (x, y) = {0,0}; Dirección 0 esquina inferior derecha (x, y) = {0,0}; Tscobj.activExsendCommand ("Ponga la lágrima"); Tscobj.activexclearbuffer (); //Tscobj.activexsendCommand ("putpcx 0,0,/" 123.pcx/""); /* 1. ActiveXPrinterFont utiliza codificación incorporada para la máquina, que generalmente se usa para escribir en inglés. 2. ActiveXWindowsFont puede generar caracteres chinos, pero debe ser una fuente que existe en el sistema. Tscobj.activexprinterfont ("a", "b", "c", "d", "e", "f", "g"); A: cadena, el punto de partida en la dirección x del texto, representado por un punto. B: cadena, el punto de partida de la dirección del texto, representada por un punto. C: nombres de fuentes construidos, un total de 12 tipos (1: 8*12 puntos 2: 12*20 puntos 3: 16*24 puntos 4: 24*32 puntos 5: 32*48 puntos TST24.BF2: chino tradicional 24*24 tst16.bf2: chino tradicional 16*16 ttt24.bf2: chino tradicional 24*24 (letra) tss24.bf2: chino*24.2.bf.bf.bf2.bf2.bf2.bf2.bf2.bf2.bf2 Chino 16*16 k: texto 24*24 l: texto 16*16) d: cadena, ángulo de rotación E: cadena, aumento de la dirección X 1-8 F: cadena, aumento de la dirección Y-Dirección 1-8 G: cadena, Contenido de impresión ActiveXWindowsFont (A, B, C, D, E, F, G, H) Descripción: Texto de impresión con Windows Ttf Font. Parámetros: A: tipo entero, el punto de partida en la dirección x del texto, representado por un punto. B: Tipo entero, el punto de partida de la dirección del texto y, representado por un punto. C: tipo entero, altura de fuente, representada por puntos. D: tipo entero, ángulo de rotación, rotación en sentido antihorario. 0-ROTATE 0 °, 90 ROTATO 90 °, 180 ROTATO 180 °, 270 ROTATE 270 °. E: tipo entero, apariencia de fuente. 0: etiqueta; 1: cursiva; 2: en negrita; 3: Entre cursiva. F: tipo entero, bajo, 0: sin subrayar; 1: subrayado. G: tipo de cadena, nombre de fuente. Por ejemplo: Arial, Times New Roman. H: Tipo de cadena, imprima contenido de texto. */// tscobj.activexwindowsfont (500, 200, 48, 90, 0, "arial", "/u7f16/u7801"); Tscobj.activexwindowsfont (260, 60, 60, 0, 2, 0, "arial", "xx específico"); // var cmd = 'QRCode Barcode Punto de inicio en la dirección X, punto de inicio del código de barras en la dirección y, nivel de corrección de errores, altura del código QR, A (A y M), ángulo de rotación, M2 (clasificado en Tipo 1 y Tipo 2), S1 (S1-S8, predeterminado S7),/"1231 Hola 2421341325454353/"; var cmd = 'qrcode 80,80, h, 7, a, 0, m2, s1,/"'+" 123456789 "+'/"'; Tscobj.activexsendCommand (CMD); Tscobj.activexwindowsfont (280, 150, 40, 0, 0, "Arial", "123456789"); Tscobj.activexwindowsfont (180, 260, 30, 0, 0, 0, "arial", "xxxxxxxxxx"); Tscobj.activexPrintLabel ("1", "1"); // (número de copias de impresión, número de impresiones por página) tscobj.activexclearbuffer (); // clare tscobj.activexcloSeport (); // Cierre el puerto de impresión} </script>Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.