impresora de llamadas web java para imprimir archivos pdf

La compañía solicitó recientemente el desarrollo de un sistema de marcado, y tomó un tiempo llamar a la impresora.

1. Herramientas de compilación y entorno: eclipse + jdk1.8 + tomcat8.5 + ireport5.0.1 + jasperreports4.5.1 + navegador Firefox

2. Hay dos formas de llamar a la impresora:

Aquí es generar un archivo jasper después de diseñar la plantilla con ireport, llamar al archivo jasper en segundo plano y transferir los datos para generar un archivo pdf, y ponerlo en la carpeta temporal bajo el directorio raíz del proyecto. Este código no se colocará, es decir, el siguiente pdfPath es un archivo pdf. Ruta, por ejemplo: D: \ xxx \ apache-tomcat-8.5.53 \ webapps \ nombre del proyecto \ temp \ xxx.pdf, 
coloque el código directamente debajo.

(1) Llame a la impresora en el lado del servidor (Ventaja: puede imprimir con una clave a la vez. Desventaja: necesita compartir la impresora con el cliente al servidor. Los colegas de operación y mantenimiento dicen que si el servidor se apaga y se reinicia, la impresora debe reconfigurarse, por lo que este no es mi plan final)

       String printName = "xxxx"; // El nombre de la impresora 
            boolean esChoose = false ; // Si hay una impresora correspondiente 
            Archivo de archivo = archivo nuevo (pdfPath); 
            documento PDDocument = PDDocument.load (archivo); // Lea el archivo pdf 
            Trabajo de PrinterJob = PrinterJob.getPrinterJob ();   // Crear un trabajo de impresión
             // Recorrer los nombres de todas las impresoras para obtener la impresora especificada 
            para (PrintService ps: PrinterJob.lookupPrintServices ()) { 
                String psName = ps.toString ();
                 if (psName.equals (printName)) { 
                    isChoose= true ; 
                    job.setPrintService (ps); 
                    break ; 
                } 
            } 
            if (isChoose) { 
                job.setPageable ( new PDFPageable (document)); 
                Paper paper = new Paper (); 
                paper.setSize ( 227, 142); // set Tamaño del papel de impresión: longitud (mm) * 72 / 25.4 Estoy aquí 80 mm * 50 mm 
                paper.setImageableArea (0, 0, paper.getWidth (), // Establecer la posición de impresión / coordenadas 
                        paper.getHeight ()); 
                PageFormat pageFormat = new PageFormat ();
                pageFormat.setPaper (paper); 
                Book book = new Book (); 
                 // Establezca si algunos atributos escalan el número de hojas impresas (document.getNumberOfPages () es el número de páginas en el archivo pdf), etc., aquí seleccione el tamaño real 
                book.append ( nuevo PDFPrintable (document, Scaling.ACTUAL_SIZE), pageFormat, document.getNumberOfPages ()); 
                job.setPageable (book); 
                job.print (); // Iniciar impresión 
            }
             // Eliminar archivo 
            if (file.exists ()) { 
                file. eliminar (); 
            }

 

(2) Llame a la impresora del cliente (local) (js implementa el navegador para llamar a la impresora) (Ventaja: llame directamente a la impresora local, no se requiere configuración. Desventajas: aparecerá un cuadro de aviso de impresión, un paso más de operación)

Llame al fondo para generar un archivo pdf y pase la ruta del archivo al primer plano. Agregue el siguiente código a la página. Aquí lo visualizo en la página, que es equivalente a la vista previa de impresión (si no desea mostrar, agregue mostrar: ninguno en el estilo. La impresión está en blanco, hay tiempo para depurar más tarde)

<iframe style = "font-weight: bold; width: 100%; height: 300px" id = "printIframe"> </iframe>

 Agregue el siguiente código en el método de activación de hacer clic en el botón Imprimir

var arr = data.pdfPath.split ("nombre del proyecto \\"); <! - data.pdfPath es la ruta pdf devuelta desde el primer plano, solo necesitamos obtener la ruta después del nombre del proyecto-> 
$ ("# printIframe ") .attr (" src ", arr [1]); <! - Cargue el src del iframe, cargue el archivo pdf 
	en > 
setTimeout (function () { document.getElementById ('printIframe'). contentWindow.print (); 
	}, 500);

 Después de hacer clic, aparecerá un mensaje de impresión; si es la impresora predeterminada, haga clic en imprimir (la impresora debe configurar primero el tamaño del papel)

La impresora que llamó al cliente encontró en Internet que el complemento lodop se puede usar para lograr la impresión con un solo clic, pero el contenido de impresión agregará automáticamente algunas palabras de la versión de prueba, que debe comprarse antes de que pueda eliminarse, o puede eliminarse después de la vista previa, pero aún más Operación de un paso, así que no pasé al siguiente paso.

Otro método es instalar el lector de Adobe en el lado del cliente, las llamadas de fondo de Java para ejecutar AcroRd32.exe para imprimir directamente , esto se puede lograr, pero debido a que el lector de Adobe que instalé abre el archivo PDF de la etiqueta solo muestra el código QR, otro contenido está en blanco, Indiqué el problema de la fuente, debido a la relación de tiempo, renuncié. Si lo necesita, puede encontrar la operación específica en línea.

 

Supongo que te gusta

Origin www.cnblogs.com/Mrshuang11/p/12759794.html
Recomendado
Clasificación