La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado.
import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.swing.JFileChooser; import javax.print.PrintException; import javax.print.PrintServiceLookup; import javax.print.attribute.standard.Copies; import javax.print.attribute.PrintRequestAttributeSet; import javax.swing.filechooser.FileNameExtensionFilter; import javax.print.attribute.HashPrintRequestAttributeSet; /** * @web https://www.jc-mouse.net * @author Mouse */ public class jcPrint { private JFileChooser fileChooser; private FileNameExtensionFilter filter = new FileNameExtensionFilter("Imagen","jpg","gif","png"); private FileInputStream fileInputStream = null; private File file=null; public jcPrint(){} public boolean Abrir() { fileChooser = new JFileChooser(); fileChooser.setFileFilter(filter); int result = fileChooser.showOpenDialog(null); if ( result == JFileChooser.APPROVE_OPTION ){ try { this.fileInputStream = new FileInputStream( fileChooser.getSelectedFile() ); this.file = fileChooser.getSelectedFile(); return true; } catch (IOException ex) { System.out.println("Error al abrir archivo " + ex); } } return false; } public String getPathImage() { return this.file.toString(); } //funcion que imprime una imagen almacenda en "fileInputStream" public void Imprimir() { if( this.fileInputStream != null ) { try { //atributos de la impresora PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); pras.add(new Copies(1)); //Impresora configurada del sistema PrintService ps = PrintServiceLookup.lookupDefaultPrintService(); DocPrintJob docPrintJob = ps.createPrintJob(); Doc doc = new SimpleDoc(fileInputStream, DocFlavor.INPUT_STREAM.GIF, null); docPrintJob.print(doc, pras); fileInputStream.close(); } catch (PrintException ex) { System.out.println(ex); } catch (IOException ex) { System.out.println(ex); } finally { try { fileInputStream.close(); } catch (IOException ex) { System.out.println(ex); } } } } }
IDE: Netbeans 6.9
Bájate el proyecto desde este enlace
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap...
El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y...
En muchas ocasiones es necesaria la personalización de componentes java para que estos se adecuen a nuestros requerimien...
En ocasiones los administradores de sitios web experimentan problemas de lentitud en su carga o en el peor de los casos...
Qué necesitamos: Un editor de texto que coloree el código, por ejemplo Notepad++, esto nos ayuda a trabajar mas facilmen...
JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el...
Los comentarios estan cerrados
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Hola que tal disculpa llevo investigando mucho y aquí es donde veo algo parecido
mi pregunta es se puede imprimir imagen con texto ?
si se puede 🙂 la pregunta seria ¿donde?
– en la interfaz gráfica, puedes usar java2d
– en un reporte o directamente en la impresora, hay varias maneras.
🙂
Mi pregunta es : se puede imprimir de este modo sin que salga el cuadro de impresion sin el cuadro de configuracion de impresion e imprima directo ???
Como puedo imprimir un reporte directamente en la impresora, el cual contenga imagen y texto.
Antes que nada gracias por tu aporte, me funciona perfecto tu ejemplo, pero me imprime al centro, como puedo manipular la ubicación de la imagen?? y tambien el TopMargin es demasiado.. gracias de antemano!
Otra duda es, yo pude imprimir texto plano por un lado, y la imagen QR por otro, lo que quiero es imprimir la imagen justo despues del texto.
Ejemplo
*******ticket*********
texto plano_____ejm
texto plano_____ejm
texto plano_____ejm
texto plano_____ejm
IMG(QR) imagen_QR
Pd. no se si me dejo entender! saludos
si quieres imprimir facturas con QR todo es cosa del diseñador de reportes ahí puedes indicar la posición y tamaño de la imagen
Este es mi Codigo por si le sirve a alguien!
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob pj = service.createPrintJob();
byte[]bytes = cadena.getBytes();
Doc doc = new SimpleDoc(bytes, flavor,null);
if (impresoraDisponible(service)) { //verificarEstadoImpresora.
try{
pj.print(doc,null);
resultado = «ok»;
}catch(PrintException pe){
Logs.escribirLog(Logs.ste2String(pe.getStackTrace(), pe, «Ocurrio un error al momento de Imprimir.»), 3);
resultado = «Ocurrio un error al momento de Imprimir. Error: «+pe.getMessage();
System.out.println(pe.getMessage());
}catch(Exception e){
Logs.escribirLog(Logs.ste2String(e.getStackTrace(), e, «Ocurrio un error al momento de Imprimir.»), 3);
resultado = «Ocurrio un error al momento de Imprimir. Error: «+e.getMessage();
System.out.println(e.getMessage());
}
}
//***Impresion de la Imagen QR****
PrintService ps = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob docPrintJob = ps.createPrintJob();
Doc docu = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.GIF, null);
try{
docPrintJob.print(docu,null);
}catch(PrintException pe){
Logs.escribirLog(Logs.ste2String(pe.getStackTrace(), pe, «Ocurrio un error al momento de Imprimir.»), 3);
resultado = «Ocurrio un error al momento de Imprimir. Error: «+pe.getMessage();
System.out.println(pe.getMessage());
}
try {
fis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//***Impresion de la Imagen QR****
La forma solucion mas rapida que encontré fue esa…. pero no es mala idea usar un generador de reportes! Saludos!!
Muchas gracias por compartir tu información, me ha sido muy útil.