Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] imprimir con java y printjob

Estas en el tema de imprimir con java y printjob en el foro de Java en Foros del Web. tengo el siguiente codigo q nme imprime un diseño de una etiqueta para productos con codigos de barras @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original import ...
  #1 (permalink)  
Antiguo 08/02/2011, 08:29
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
imprimir con java y printjob

tengo el siguiente codigo q nme imprime un diseño de una etiqueta para productos con codigos de barras

Código Java:
Ver original
  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.FontMetrics;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.geom.Rectangle2D;
  7. import java.awt.image.BufferedImage;
  8. import java.awt.print.*;
  9. import java.util.Date;
  10. import java.util.logging.*;
  11. import net.sourceforge.barbecue.*;
  12. import net.sourceforge.barbecue.output.OutputException;
  13.  
  14. public class imprimir_individual {
  15.     String item_no,ident,country_o,country_o2,qty2,cus;    
  16.     recibir_serial res_ser=new recibir_serial();
  17.    
  18. public void impresion(String item,String cust_num,String iden,String country,String country2,String qty,int valor){
  19.     item_no=item;
  20.     ident=iden;
  21.     country_o=country;
  22.     country_o2=country2;
  23.     qty2=qty;
  24.     cus=cust_num;
  25.     if(valor==1){
  26. PrinterJob printJob = PrinterJob.getPrinterJob();
  27.   Book book = new Book();
  28.   book.append(new IntroPage(), printJob.defaultPage());
  29.     printJob.setPageable(book);
  30.     if (printJob.printDialog()) {
  31.       try {
  32.         printJob.print();
  33.       } catch (Exception PrintException) {
  34.         PrintException.printStackTrace();
  35.       }
  36.     }
  37.     }
  38. }
  39.   private class IntroPage implements Printable {
  40.  
  41.          public int print(Graphics g, PageFormat pageFormat, int page) {
  42.             try {
  43.                 Graphics2D g2d2 = (Graphics2D) g;
  44.                  java.util.Date fecha = new Date();
  45. int [] diasDeMeses = new int [] {31,28,31,30,31,30,31,31,30,31,30,31,30,31};
  46. String [] numeroDeMeses = new String [] {"","1","2","3","4","5","6","7","8","9","10","11","12"};
  47. int mes = fecha.getMonth();
  48. System.out.println("mes: "+mes);
  49. int dia = fecha.getDay();
  50. int dia2=0;
  51. int dias = -1;
  52. for( int i = 0; i<mes; i++ ){
  53.     dia2=diasDeMeses[i];
  54. dias =dias + dia2;
  55. }
  56. dias += dia;
  57. String dias_acum=""+dias+"";
  58. if(dias_acum.length()==1){
  59. dias_acum="00"+dias_acum;
  60. }
  61. if(dias_acum.length()==2){
  62. dias_acum="0"+dias_acum;
  63. }
  64.                
  65.                 int iNumero=fecha.getYear();
  66.                 int anio = iNumero%10;              
  67.                                 g2d2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
  68.                 g2d2.setPaint(Color.black);
  69.                 Rectangle2D.Double rec_ind = new Rectangle2D.Double(1, 1, 144, 203); //se tiene q quitar
  70.                 g2d2.draw(rec_ind);
  71.                 String customer = cus;
  72.                 Font customerFont = new Font("Arial", Font.BOLD, 14);
  73.                 String julian_ind = anio+dias_acum;
  74.                 System.out.println("julian: "+julian_ind);
  75.                 Font julian_iFont = new Font("Arial", Font.BOLD, 10);
  76.                 Barcode barcode_c = BarcodeFactory.createCode39(cus, false);
  77.                 barcode_c.setDrawingText(false);
  78.                 barcode_c.setBarHeight(35);
  79.                 barcode_c.setBarWidth(1);
  80.                 BufferedImage image_c = BarcodeImageHandler.getImage(barcode_c);
  81.                 g2d2.setFont(julian_iFont);
  82.                 FontMetrics julian_ifontMetrics = g2d2.getFontMetrics();
  83.                 g2d2.drawString(julian_ind, 64, 16);
  84.                 g2d2.drawImage(image_c, 10, 21, null);
  85.                 g2d2.setFont(customerFont);
  86.                 FontMetrics customerfontMetrics = g2d2.getFontMetrics();
  87.                 g2d2.drawString(customer, 41, 84);
  88.                 ////
  89.                 g2d2.setFont(julian_iFont);
  90.                 FontMetrics julian_i2fontMetrics = g2d2.getFontMetrics();
  91.                 g2d2.drawString(julian_ind, 64, 200);
  92.                 g2d2.drawImage(image_c, 10, 145, null);
  93.                 g2d2.setFont(customerFont);
  94.                 FontMetrics customer2fontMetrics = g2d2.getFontMetrics();
  95.                 g2d2.drawString(customer, 43, 141);
  96.  
  97.             } catch (OutputException ex) {
  98.                 Logger.getLogger(imprimir_individual.class.getName()).log(Level.SEVERE, null, ex);
  99.             } catch (BarcodeException ex) {
  100.                 Logger.getLogger(imprimir_individual.class.getName()).log(Level.SEVERE, null, ex);
  101.             } return PAGE_EXISTS;
  102.    }
  103.   }
  104. }

el asunto es q con este codigo se me abre un cuadro de dialogo en el q escojo la impresora a la que quiero mandar a imprimir con este codigo q esta en el de arriba

PrinterJob printJob = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(new IntroPage(), printJob.defaultPage());
printJob.setPageable(book);
if (printJob.printDialog()) {
try {
printJob.print();
} catch (Exception PrintException) {
PrintException.printStackTrace();
}
}

y si lo dejo asi

PrinterJob printJob = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(new IntroPage(), printJob.defaultPage());
printJob.setPageable(book);
try {
printJob.print();
} catch (Exception PrintException) {
PrintException.printStackTrace();
}

me manda imprimir directamente a la impresora q tengo predeterminada en mi pc

mi pregunta es alguien sabe como puedo mandar a imprimir a una impresora x q no sea la predeterminada

quiero algo como esto no se si se pueda asi pero es un ejemplo de como quiero hacerle

PrinterJob printJob = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(new IntroPage(), printJob.defaultPage());
printJob.setPageable(book);
if (printJob.printDialog()) {
try {
printJob.print("hp laserject P1002");//aqui darle el nombre de la impresora
} catch (Exception PrintException) {
PrintException.printStackTrace();
}
}

o algo q se le paresca

espero haberme explicado y puedan ayudarme gracias
  #2 (permalink)  
Antiguo 11/02/2011, 15:16
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

encontre este codigo en la cual busco la impresora q necesito pero no logro encontrar una funcion para imprimir a la impresora q yo le indique sin q me habra el cuadro de dialogo

Código Java:
Ver original
  1. import javax.print.DocFlavor;
  2. import javax.print.PrintService;
  3. import javax.print.PrintServiceLookup;
  4. import javax.print.attribute.AttributeSet;
  5. import javax.print.attribute.HashAttributeSet;
  6. import javax.print.attribute.standard.PrinterName;
  7.  
  8.  
  9. public class PrintExamples {
  10.  
  11.     public static void main(String[] args) {
  12.       String printName="";
  13.       int count=0;
  14.         PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
  15.         for(PrintService printService : services){
  16.             if (count==0){
  17.         printName=printService.getName();}
  18.             count=count+1;
  19.         }
  20.  
  21.          AttributeSet aset = new HashAttributeSet();
  22.         aset.add(new PrinterName(printName, null));
  23.         services = PrintServiceLookup.lookupPrintServices(null, aset);
  24.         if(services.length == 0){
  25.             System.out.println("No se encontro impresora con nombre " + printName);
  26.         }
  27.         for (PrintService printService : services) {
  28.             System.out.println("impresora encontrada: "+printService.getName());
  29.         }
  30.                  }
  31. }

lo que me falta en este codigo es usar la impresora q busque para imprimir en esa

lo que pretendi hacer para mandarle directamente fue esto pero no sale nada asi

Código Java:
Ver original
  1. import javax.print.DocFlavor;
  2. import javax.print.PrintService;
  3. import javax.print.PrintServiceLookup;
  4. import javax.print.attribute.AttributeSet;
  5. import javax.print.attribute.HashAttributeSet;
  6. import javax.print.attribute.standard.PrinterName;
  7.  
  8.  
  9. public class PrintExamples {
  10.  
  11.     public static void main(String[] args) {
  12.       String printName="nombre de la impresora";
  13.      PrintService services = PrintServiceLookup.lookupPrintServices(null, null);
  14.          
  15.         AttributeSet aset = new HashAttributeSet();
  16.         aset.add(new PrinterName(printName, null));
  17.         services = PrintServiceLookup.lookupPrintServices(null, aset);
  18.          PrintService services = PrintServiceLookup.lookupPrintServices(null, aset);/*aqui intento
  19. poner q me asigne a services el servicio de impresion de la impresora q necesito para luego mandar a imprimir a esa impresora*/
  20.  
  21. System.out.println("impresora encontrada: "+services.getName());
  22.    
  23.  
  24. try{
  25. DocPrintJob pj = service.createPrintJob();
  26. // InputStreamDoc is an implementation of the Doc interface //
  27. String pd=new String("jkskhfkjsdñalfhjdskBBBBBBBBBBBBBB");
  28.  
  29. DocAttributeSet das = new HashDocAttributeSet();
  30.  
  31. Doc doc = new SimpleDoc(pd, flavor,das);
  32. try {
  33. System.out.println("Usando impresora"+service.getName());
  34. pj.print(doc, null);
  35. }
  36. catch (Exception e){
  37. System.out.println("Error al imprimir3: "+e.getMessage());
  38. }
  39. }
  40. catch (Exception e){
  41. System.out.println("Error al imprimir3: "+e.getMessage());
  42. }
  43.  
  44.                  }
  45. }

este ultimo codigo no funciona es solo un ejemplo de lo q pretendo hacer para despues adaptarlo al codigo de hasta arriba q es en donde va a ir en lugar de este pedaso

if (printJob.printDialog()) {
try {
printJob.print();
} catch (Exception PrintException) {
PrintException.printStackTrace();

}


espero me haya explicado y me puedan ayudar

gracias de antemano
  #3 (permalink)  
Antiguo 12/02/2011, 14:42
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 1 mes
Puntos: 260
Sonrisa Respuesta: imprimir con java y printjob

Hola,

Creo que solamente te hacía falta asignar la impresora que habías obtenido,

Código Java:
Ver original
  1. PrintService printers[] = PrintServiceLookup.lookupPrintServices(null, attributes);
  2.         try {
  3.             if (printers.length == 1)
  4.                 job.setPrintService(printers[0]);
Saludos,

ps:
http://www.forosdelweb.com/f45/ayuda...on-java-876652
  #4 (permalink)  
Antiguo 12/02/2011, 22:52
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: Quito
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: imprimir con java y printjob

Disculpa que te moleste, tengo una duda, yo estoy imprimiendo con PrintJob, pero en una impresora térmica... Cómo puedo controlar el margen o área de impresión...

Te explico, mando a imprimir un ticket y las letras parecen que están cortadas, el ancho máximo del papel es de 80 mm.

Gracias
  #5 (permalink)  
Antiguo 14/02/2011, 08:02
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

HackmanC

gracias por responder voy a intentarlo como me recomiendas


ivlecamo

yo tambien voy a imprimir en impresoras termicas aun no he probado pero segun yo a lo q entendi al hacer esto en el codigo

Rectangle2D.Double rec_ind = new Rectangle2D.Double(1, 1, 144, 203);

lo que hago es un margen 5cm x 7 cm, segun yo la impresora tiene sus propios margenes y tienes q calibrarla antes de usarla tomando en cuenta la etiqueta q vas a imprimir por lo cual toma esos margenes y los margenes q yo estoy estableciendo son mas chicos q los de la etiqueta en donde voy a imprimir voy a hacer una prueba de impresion en una termicaq y te doy la conclusion

pero prueba tu tambien si quieres dandole los margenes te explico

tanto en
Rectangle2D.Double rec_ind = new Rectangle2D.Double(1, 1, 144, 203);

com en
g2d2.drawString(julian_ind, 64, 16);

uso coordenadas tomando en cuenta q un mm tiene 3 puntos basandose en eso doy mis coordenadas

te explico este codigo

Rectangle2D.Double rec_ind = new Rectangle2D.Double(1, 1, 144, 203);
lo que pongo aqui es q en mi pisicion 1,1 va a ser mi origen de mi impresion, no de la etiqueta la de la etiqueta es 0,0 y a partir de ahi me va a dibujar mi margen de 5cm x 7 cm y me va a dejar libre 1 mm de espacio entre mi margen y el tamaño de la etiqueta

en

g2d2.drawString(julian_ind, 64, 16); pongo q mi text q contiene julian_ind lo posicione en mi coordenada 64 en x y 16 en y q vasicamente es el centro de mi margen con 3 milimetros de separacion entre mi margen y la posicion

tomando en cuenta q es donde empieza a dibujar el texto digamos q es donde es la parte superior de esta palabra (imaginate una linea arriba de la palabra)

fecha
q es donde se va a posicioar la palabra

espero te sirva y te haya orientado un poco

Suerte
  #6 (permalink)  
Antiguo 14/02/2011, 11:40
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

HackmanC

la solucion q me diste en este post me sirvio de mucho muchas gracias por tu ayuda dejo mi codigo como quedo para q alguna otra persona q tenga el mismo problema tenga la solucion

muchas gracias


Código Java:
Ver original
  1. import com.mysql.jdbc.Connection;
  2. import com.mysql.jdbc.Statement;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import java.awt.geom.Rectangle2D;
  9. import java.awt.image.BufferedImage;
  10. import java.awt.print.*;
  11. import java.sql.DriverManager;
  12. import java.sql.ResultSet;
  13. import java.util.Date;
  14. import java.util.logging.*;
  15. import javax.print.PrintService;
  16. import javax.print.PrintServiceLookup;
  17. import javax.print.attribute.AttributeSet;
  18. import javax.print.attribute.HashAttributeSet;
  19. import javax.print.attribute.standard.PrinterName;
  20. import net.sourceforge.barbecue.*;
  21. import net.sourceforge.barbecue.output.OutputException;
  22.  
  23. public class imprimir_caja {
  24.    int count=0;
  25.     String iden, country, country2, qty, cust_num;
  26.     String item="16U-26084-03";
  27.    boolean band=false;
  28.      String item_no,ident,country_o,country_o2,qty2,cus;
  29.   public static void main(String args[]) throws Exception{
  30.       imprimir_caja obj=new imprimir_caja();
  31.   obj.impresion();
  32.   }  
  33.  private static Connection getConnection() throws Exception {
  34.         Class.forName("com.mysql.jdbc.Driver");
  35.         String url = "jdbc:mysql://localhost/etiquetas";
  36.         return (Connection) DriverManager.getConnection(url, "root", "");
  37.     }
  38.  public void impresion() throws Exception{
  39.       Connection con;
  40.         ResultSet rs;
  41.         Statement smt;
  42.         con = getConnection();
  43.         smt = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  44.         rs = smt.executeQuery("consulta sql");
  45.         rs.first();
  46.         item = rs.getString("item");
  47.         System.out.println(item);
  48.         iden = rs.getString("identifier");
  49.         country = rs.getString("country_origin");
  50.         country2 = rs.getString("country2");
  51.         qty = rs.getString("qty");
  52.         cust_num = rs.getString("customer_num");
  53.         String printName="";
  54. PrinterJob printJob = PrinterJob.getPrinterJob();
  55.   Book book = new Book();
  56.   book.append(new IntroPage(), printJob.defaultPage());
  57.     printJob.setPageable(book);
  58.    int count = 0;
  59.         PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);//con este vemos las impresoras instaladas como mis pruebas estan en red pues por eso uso este
  60.         for (PrintService printService : services) {//este for se quita
  61.             if (count == 1) {//junto con esto
  62.                 printName = printService.getName();//si se le da el nombre a la impresora cambia por printName="nombre impresora"
  63.             }//esto
  64.             count = count + 1;//esto
  65.         }//y esto si se quiere dar el nombre de la impresora
  66.          AttributeSet aset = new HashAttributeSet();
  67.         aset.add(new PrinterName(printName, null));
  68.         services = PrintServiceLookup.lookupPrintServices(null, aset);//busca la impresora
  69.         for (PrintService printService : services) {
  70.             PrintService printers[] = PrintServiceLookup.lookupPrintServices(null, aset);
  71.                 if (printers.length == 1) {
  72.                printJob.setPrintService(printers[0]);//le asignamos la impresora de trabajo al job
  73.              try {
  74.         printJob.print();//imprimimos lo  q esta en el job
  75.       } catch (Exception PrintException) {
  76.         PrintException.printStackTrace();
  77.       }
  78.       }
  79.         }
  80.       }
  81. private class IntroPage implements Printable {
  82.          public int print(Graphics g, PageFormat pageFormat, int page) {
  83.             try {
  84.                 Graphics2D g2d = (Graphics2D) g;
  85.                 java.util.Date fecha = new Date();
  86.                 int iNumero=fecha.getYear();
  87.                 int anio = iNumero&#37;100;
  88.                 int m= fecha.getMonth()+1;
  89.                String mes=""+m+"";
  90.                 if(mes.length()==1){
  91.                 mes="0"+mes;
  92.                 }
  93.                 String julian = anio+mes;
  94.                 String serial = "0001";
  95.                 g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
  96.                 g2d.setPaint(Color.black);
  97.                 Rectangle2D.Double rec_item = new Rectangle2D.Double(1, 1, 227, 84);
  98.                 Rectangle2D.Double rec_q = new Rectangle2D.Double(1, 85, 227, 56);
  99.                 Rectangle2D.Double rec_l = new Rectangle2D.Double(1, 141, 227, 56);
  100.                 Rectangle2D.Double rec_c = new Rectangle2D.Double(1, 197, 227, 30);
  101.                 g2d.draw(rec_item);
  102.                 g2d.draw(rec_q);
  103.                 g2d.draw(rec_l);
  104.                 g2d.draw(rec_c);
  105.                 String country = "HARADA INDUSTRY OF AMERICA";
  106.                 Font countryFont = new Font("Arial", Font.BOLD, 8);
  107.                 String item2 = "ITEM No.";
  108.                 Font itemFont = new Font("Arial", Font.BOLD, 6);
  109.                 String n = "(N)";
  110.                 Font nFont = new Font("Arial", Font.BOLD, 6);
  111.                 String itemn = item;
  112.                 String item3="N"+itemn;
  113.                 Font itemnFont = new Font("Arial", Font.BOLD, 14);
  114.                 System.out.println("el valor de itemn: "+itemn);
  115.                 System.out.println("el valor de item3: "+item3);
  116.                 Barcode barcode = BarcodeFactory.createCode39(item3, false);
  117.                 barcode.setDrawingText(false);
  118.                 barcode.setBarHeight(45);
  119.                 barcode.setBarWidth(1);
  120.                 BufferedImage image = BarcodeImageHandler.getImage(barcode);
  121.                 String quality = "QUALITY";
  122.                 Font qualityFont = new Font("Arial", Font.BOLD, 6);
  123.                 String q = "(Q)";
  124.                 Font qFont = new Font("Arial", Font.BOLD, 6);
  125.                 String qtyn = "Q"+qty;
  126.                 Font qtyFont = new Font("Arial", Font.BOLD, 14);
  127.                 Barcode barcodeqty = BarcodeFactory.createCode39(qtyn, false);
  128.                 barcodeqty.setDrawingText(false);
  129.                 barcodeqty.setBarHeight(42);
  130.                 barcodeqty.setBarWidth(1);
  131.                 BufferedImage imageqty = BarcodeImageHandler.getImage(barcodeqty);
  132.                 String lote = "Lot No.";
  133.                 Font loteFont = new Font("Arial", Font.BOLD, 6);
  134.                 String l = "(L)";
  135.                 Font lFont = new Font("Arial", Font.BOLD, 6);
  136.                 String lotn = julian;
  137.                 Font lotFont = new Font("Arial", Font.BOLD, 14);
  138.                 julian="L"+julian;
  139.                 Barcode barcodelot = BarcodeFactory.createCode39(julian, false);
  140.                 barcodelot.setDrawingText(false);
  141.                 barcodelot.setBarHeight(42);
  142.                 barcodelot.setBarWidth(1);
  143.                 BufferedImage imagelot = BarcodeImageHandler.getImage(barcodelot);
  144.                 String cus = "Customer No.";
  145.                 Font cusFont = new Font("Arial", Font.BOLD, 6);
  146.                 String cust_n = cust_num;
  147.                 Font cus_nFont = new Font("Arial", Font.BOLD, 14);
  148.                 String country2 = "ASSEMBLED IN MEXICO";
  149.                 Font country2Font = new Font("Arial", Font.BOLD, 10);
  150.                 g2d.setFont(countryFont);
  151.                 FontMetrics countryfontMetrics = g2d.getFontMetrics();
  152.                 g2d.drawString(country, 51, 12);
  153.                 g2d.setFont(itemFont);
  154.                 FontMetrics itemfontMetrics = g2d.getFontMetrics();
  155.                 g2d.drawString(item2, 6, 24);
  156.                 g2d.setFont(nFont);
  157.                 FontMetrics nfontMetrics = g2d.getFontMetrics();
  158.                 g2d.drawString(n, 15, 33);
  159.                 g2d.setFont(itemnFont);
  160.                 FontMetrics itemnfontMetrics = g2d.getFontMetrics();
  161.                 g2d.drawString(itemn, 82, 32);
  162.                 g2d.drawImage(image, 18, 37, null);
  163.                 g2d.setFont(qualityFont);
  164.                 FontMetrics qualityfontMetrics = g2d.getFontMetrics();
  165.                 g2d.drawString(quality, 6, 93);
  166.                 g2d.setFont(qFont);
  167.                 FontMetrics qfontMetrics = g2d.getFontMetrics();
  168.                 g2d.drawString(q, 15, 102);
  169.                 g2d.setFont(qtyFont);
  170.                 FontMetrics qtyfontMetrics = g2d.getFontMetrics();
  171.                 g2d.drawString(qty, 115, 96);
  172.                 g2d.drawImage(imageqty, 86, 97, null);
  173.                 g2d.setFont(loteFont);
  174.                 FontMetrics lotefontMetrics = g2d.getFontMetrics();
  175.                 g2d.drawString(lote, 6, 150);
  176.                 g2d.setFont(lFont);
  177.                 FontMetrics lfontMetrics = g2d.getFontMetrics();
  178.                 g2d.drawString(l, 12, 159);
  179.                 g2d.setFont(lotFont);
  180.                 FontMetrics lotfontMetrics = g2d.getFontMetrics();
  181.                 g2d.drawString(lotn, 109, 152);
  182.                 g2d.drawImage(imagelot, 83, 153, null);
  183.                 g2d.setFont(cusFont);
  184.                 FontMetrics cusfontMetrics = g2d.getFontMetrics();
  185.                 g2d.drawString(cus, 6, 204);
  186.                 g2d.setFont(cus_nFont);
  187.                 FontMetrics cust_nfontMetrics = g2d.getFontMetrics();
  188.                 g2d.drawString(cust_n, 80, 209);
  189.                 g2d.setFont(country2Font);
  190.                 FontMetrics country2fontMetrics = g2d.getFontMetrics();
  191.                 g2d.drawString(country2, 76, 225);
  192.             } catch (OutputException ex) {
  193.                 Logger.getLogger(imprimir_caja.class.getName()).log(Level.SEVERE, null, ex);
  194.             } catch (BarcodeException ex) {
  195.                 Logger.getLogger(imprimir_caja.class.getName()).log(Level.SEVERE, null, ex);
  196.             } return PAGE_EXISTS;
  197.    }
  198.   }
  199. }

espero les sirva

Suerte
  #7 (permalink)  
Antiguo 14/02/2011, 23:56
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: Quito
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: imprimir con java y printjob

Hola valdo_kof, gracias por tu ayuda.... Pero parece que me entendiste mal...

Pero sabes encontré la solución en otro foro y ahora me generó un nuevo problema.

Lo que quiero hacer es imprimir un ticket en un papel de 80mm de ancho, correcto!!
Ahora los margenes no me permitían imprimir por ejemplo un texto simple en las coordenadas, g.drawString("texto a imprimir", 10, 10); porque los márgenes estaban configurados para 72px.

Encontré el siguiente código:

Código:
 PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(new ObjetoAImprimir());
        PageFormat pf = new PageFormat();
        Paper p = new Paper();
        p.setImageableArea(0,0,600,800);
        pf.setPaper(p);
        job.pageDialog(pf); 
Este hace lo que yo quiero imprimir desde la esquina superior de la hoja... Pero siempre se abre el pageDialog para mandar las propiedades del margen de impresión.

Lo que quiero es: Cómo puedo mandar las propiedades del area de impresión sin abrir el pageDialog?

Gracias

Dejo el código completo para que por favor me ayuden.

Código:
package modulocliente;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import java.util.Date;
import java.util.logging.*;


class ObjetoAImprimir implements Printable{
   public int print (Graphics g, PageFormat f, int pageIndex){

       Graphics2D g2 = (Graphics2D) g;
       Rectangle2D rect = new Rectangle2D.Double(f.getImageableX(), f.getImageableY(),193,192);
       switch (pageIndex){
            case 0 :                 
                g.drawString("texto a imprimir", 10, 100);
                g2.draw(rect);
                //System.out.println(" "+f.getImageableX()+" "+f.getImageableY()+" "+f.getImageableWidth()+" "+f.getImageableHeight());
                return PAGE_EXISTS; //La página 1 existe y se imprimirá
           default: return NO_SUCH_PAGE;        //No se imprimirán más páginas
       }
   }
}

public class imprimir {
    /** Creates a new instance of imprimir */
    public imprimir() {  
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(new ObjetoAImprimir());
        PageFormat pf = new PageFormat();
        Paper p = new Paper();
        p.setImageableArea(0,0,600,800);
        pf.setPaper(p);
        job.pageDialog(pf);

        try { 
            job.print(); 
        }catch (PrinterException e) { System.out.println("Error de impresión: " + e); }
    }
}
  #8 (permalink)  
Antiguo 15/02/2011, 07:21
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

hola ivlecamo no te entendi mal a tu codigo solo tenias q quitarle el 72px q son los puntos q tiene una pulgada por eso te mensione q por cada 3 puntos corresponde 1mm para q te saliera la dimension q queria ssolo tenias q multiplicar 8 x 3, pero bueno pasando a tu otro error creo q solo hay q quitarle

PageFormat pf = new PageFormat();
Paper p = new Paper();
p.setImageableArea(0,0,600,800);//esto para mi sale sobrando ya q en la parte de arriba ya le dijiste de donde a donde quieres tu impresion en la parte de g.drawString("texto a imprimir", 10, 100);

pf.setPaper(p);
job.pageDialog(pf); xq ahi estas mandando llamar el dialogo q dices q te aparece o cambia el .pageDialog por algun otro q te reciba el formato de la pagina sin llamar el dialog

intenta quitarle lo q te puse a ver si te funciona

mientras voy a probar tu codigo para ver como se puede solucionar

Suerte
  #9 (permalink)  
Antiguo 15/02/2011, 08:01
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

listo provee el codigo y si efectivamente si le quitas esto

PageFormat pf = new PageFormat();
Paper p = new Paper();
p.setImageableArea(0,0,600,800);
pf.setPaper(p);
job.pageDialog(pf);

te manda imprimir directo a la impresora

suerte
  #10 (permalink)  
Antiguo 15/02/2011, 12:20
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: Quito
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: imprimir con java y printjob

Hola valdo_kof, sabes con este código me aparece un Dialog (Propiedades de margen, creo que propio de java) este dialog me aparece pero ya encontré la forma de mandar directamente a imprimir sin que aparezca este Dialog.

Dejo el código.

Código:
        PrinterJob job = PrinterJob.getPrinterJob();
        
        PageFormat pf = new PageFormat();
        Paper p = new Paper();
        p.setImageableArea(0,0,600,800);
        pf.setPaper(p);
        job.setPrintable(new ObjetoAImprimir(), pf);
Tengo otro inconveniente, ojala puedas ayudar:

Necesito traer una imagen pequeña... para imprimir en el ticket estoy utilizando este código...

Mi pregunta es donde debo guardar a la imagen (físicamente?, en una carpeta? exportarle a netbeans? que hago?)

Estoy usando y debo usar este código:

Código:
Image img1 = Toolkit.getDefaultToolkit().getImage("mi_imagen.jpg");
g2.drawImage(img1, 10, 10, 20, 20, null);
Gracias por tu ayuda y si tienes msn me puedes pasar? gracias!!!
  #11 (permalink)  
Antiguo 15/02/2011, 12:39
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por ivlecamo Ver Mensaje
Hola valdo_kof, sabes con este código me aparece un Dialog (Propiedades de margen, creo que propio de java) este dialog me aparece pero ya encontré la forma de mandar directamente a imprimir sin que aparezca este Dialog.

Dejo el código.

Código:
        PrinterJob job = PrinterJob.getPrinterJob();
        
        PageFormat pf = new PageFormat();
        Paper p = new Paper();
        p.setImageableArea(0,0,600,800);
        pf.setPaper(p);
        job.setPrintable(new ObjetoAImprimir(), pf);
creo no probaste el codigo q te puse arriba pero bueno, q bueno q ya encontraste como hacerlo y con respecto a

Cita:
Iniciado por ivlecamo Ver Mensaje
Tengo otro inconveniente, ojala puedas ayudar:

Necesito traer una imagen pequeña... para imprimir en el ticket estoy utilizando este código...

Mi pregunta es donde debo guardar a la imagen (físicamente?, en una carpeta? exportarle a netbeans? que hago?)

Estoy usando y debo usar este código:

Código:
Image img1 = Toolkit.getDefaultToolkit().getImage("mi_imagen.jpg");
g2.drawImage(img1, 10, 10, 20, 20, null);
Gracias por tu ayuda y si tienes msn me puedes pasar? gracias!!!
pues primero si se supone q tu imagen esta la jalas con Image img1 = Toolkit.getDefaultToolkit().getImage("mi_imagen.jp g");
es xq la tienes fisicamente en disco o si "mi_imagen.jpg" la tienes q crear de algun algo?, no se de un texto o es el logo de la empresa, negocio, etc de donde vas a imprimir el ticket o q es ese "mi_imagen.jpg" si es un logo pues lo debes de tener fisicamente en disco y tu codigo quedaria

Image img1 = Toolkit.getDefaultToolkit().getImage("C://mi_imagen.jpg");
, por ejemplo y pues con respecto al tamaño si no hay problema o no ocupas esa imagen para otra cosa pues xq no la editas en fireworks, photoshop o paint para hacerla al tamaño q necesitas, al fin q al llamar tu imagen toma sus propiedades

o si quieres cambiarle el tamaño a la imagen pues entonces seria

Image img1 = Toolkit.getDefaultToolkit().getImage("C://mi_imagen.jpg");
g2.drawImage(img1, coordenada x, coordenada y, height, weight ,null);

con eso te debe de dar el tamaño en q la quieres pero insisto va a ser mas facil q la edites al tamaño q la necesites si es q es una imagen prediseñada q solo tienes q cargar

avisame si q es lo que tienes q hacer con esa imagen

lo q te escribi solo es para darte una idea redactame bien q es loq ue quieres hacer con la imagen, si necesitas crearla o solo darle el tamaño especifico

Saludos
Suerte

P.D. no te doy mi correo xq casi todo el dia estoy en la oficina trabajando y no me permiten abrir el messenger
  #12 (permalink)  
Antiguo 15/02/2011, 12:51
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: Quito
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: imprimir con java y printjob

Muchas gracias. No probé el código porque le ví similar al que anteriormente le puse... pero ya le voy a ver....

Sobre cargar la imagen ok, voy a probar...


Saludos
Leandro Camo
  #13 (permalink)  
Antiguo 15/02/2011, 12:53
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

ok suerte espero y te haya orientado cualquier duda aqui estamos para ayudarnos, no olvides postear tus resultados, cuando ya lo hayas solucionado, para otras personas q tengan las mismas dudas q nosotros

Suerte
  #14 (permalink)  
Antiguo 23/02/2011, 09:36
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

ivlecamo

una pregunta ocupas algo especial para imprimir en tu impresora termica, xq intento imprimir pero no me da nada, si me manda a cola de impresion pero asi como me manda lo quita y cuando mando impresiones seguidas me sale algo como eliminando impresion y en donde dice paguida en la ventanita de los trabajos de impresion me aparece D/N

la impresora termica se comunica por puerto serial

sera q tengo q usar un dll para mandarlo al puerto serial???
  #15 (permalink)  
Antiguo 07/07/2011, 20:12
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: imprimir con java y printjob

hola que como estan ..
es que he hecho lo mimo de configurar el tamaño de imprecion por codigo sin el dialogo mas sin embargo cualqueira de las dos formas que uso para hacerlo.
me causan un retardo de casi un minuto y medio para imprimir ??

a alguien le ha pasado esto ??


gracias
  #16 (permalink)  
Antiguo 08/07/2011, 06:30
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por juannn91 Ver Mensaje
hola que como estan ..
es que he hecho lo mimo de configurar el tamaño de imprecion por codigo sin el dialogo mas sin embargo cualqueira de las dos formas que uso para hacerlo.
me causan un retardo de casi un minuto y medio para imprimir ??

a alguien le ha pasado esto ??


gracias
tiene algo que ver con el tipo de letra que usas, no me ha pasado con el codigo que esta aqui, pero si usando el programa labelview 8 que con algunas etiquetas que usa un tipo de letra propio del programa (que reconoce la impresora mas facilmente), no se tarda y si uso el time new roman o arial hace esa pausa por por orden de impresion de etiqueta que mando

checale al tipo de letra, cambiaselo y toma tus tiempos si ves q aumenta o disminuye vas a ver que es por ahi
  #17 (permalink)  
Antiguo 01/08/2011, 11:11
Avatar de kannonnr  
Fecha de Ingreso: junio-2011
Ubicación: Pasto
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: imprimir con java y printjob

valdo_kof este codigo sirve para cualquier impresora???

Puesto q es la primera vez q trabajo con impresoras desde java y pues me serviría muchísimo
__________________
Bosatzu Kannon
Keep Moving Forward
  #18 (permalink)  
Antiguo 01/08/2011, 11:41
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por kannonnr Ver Mensaje
valdo_kof este codigo sirve para cualquier impresora???

Puesto q es la primera vez q trabajo con impresoras desde java y pues me serviría muchísimo
efectivamente sirve para cualquiera, pero en caso de una termica no respeta sus margenes, agarra los amrgenes q tiene una impresora normal no se que sea pero si lo necesitas para imprimir normalmente si te sirve y mucho

Suerte
  #19 (permalink)  
Antiguo 01/08/2011, 14:58
Avatar de kannonnr  
Fecha de Ingreso: junio-2011
Ubicación: Pasto
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: imprimir con java y printjob

No se si sea mucho atrevimiento de mi parte,pero me gustaria que me explicaras un poco,puesto q como dije anteriormente es mi primera vez utilizando impresora
__________________
Bosatzu Kannon
Keep Moving Forward
  #20 (permalink)  
Antiguo 01/08/2011, 15:05
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por kannonnr Ver Mensaje
No se si sea mucho atrevimiento de mi parte,pero me gustaria que me explicaras un poco,puesto q como dije anteriormente es mi primera vez utilizando impresora
claro nada mas mandame tu correo para mandarte el codigo explicandote linea por linea y dime como q es lo que quieres imprimir y como lo tienes pensado ahcer
  #21 (permalink)  
Antiguo 01/08/2011, 15:13
Avatar de kannonnr  
Fecha de Ingreso: junio-2011
Ubicación: Pasto
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: imprimir con java y printjob

Es un programa para manejar una base de datos de una biblioteca pequeña, quiero implementar la opcion de imprimir paz y salvos para los estudiantes.
Me gustaria imprimir en la parte de arriba la misma imagen que uso en el programa, como en forma de banner en la hoja, y mas abajo el texto correpondiente a el paz y salvo.

Mi correo es [email protected]

Y desde ya te agradezco muchisimo, me estas salvando la vida jejejejeje
__________________
Bosatzu Kannon
Keep Moving Forward
  #22 (permalink)  
Antiguo 01/08/2011, 15:34
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por kannonnr Ver Mensaje
Es un programa para manejar una base de datos de una biblioteca pequeña, quiero implementar la opcion de imprimir paz y salvos para los estudiantes.
Me gustaria imprimir en la parte de arriba la misma imagen que uso en el programa, como en forma de banner en la hoja, y mas abajo el texto correpondiente a el paz y salvo.

Mi correo es [email protected]

Y desde ya te agradezco muchisimo, me estas salvando la vida jejejejeje
ok tratare de orientarte un poco en lo q pretendes hacer, en primera no se q es paz y salvo me imagino q es un texto o algo q vas a jalar de tu base de datos

lo de tu imagen de eso no hay problema el codigo te resuelve eso te mando el codigo duente mas o menos arregla a lo que quieres con una breve explicacion cualquier duda me respondes al correo con el q te lo mande


suerte!!!
  #23 (permalink)  
Antiguo 01/08/2011, 17:06
Avatar de kannonnr  
Fecha de Ingreso: junio-2011
Ubicación: Pasto
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: imprimir con java y printjob

Gracias aunque no me ha llegado algun correo de tu parte
__________________
Bosatzu Kannon
Keep Moving Forward
  #24 (permalink)  
Antiguo 01/08/2011, 20:47
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: imprimir con java y printjob

Cita:
Iniciado por kannonnr Ver Mensaje
Gracias aunque no me ha llegado algun correo de tu parte
no desesperes, ya te lo mande checalo espero me haya explicado bien o minimo orientarte

cualquier problema no dudes en avisarme

falta el codigo de la imagen pero no lo tengo a la mano mañana te lo paso
y te digo donde lo coloques y como se maneja

suerte!!!!
  #25 (permalink)  
Antiguo 09/05/2014, 11:54
 
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: imprimir con java y printjob

Hola a todos e estado mirando los ejemplo y me gustaría si me pueden ayudar con un codigo Java que me imprima ticket a una impresa predeterminada, incluyendo imagenes y texto y ademas que me corte el ticket. su ayuda seria de gran ayuda.
  #26 (permalink)  
Antiguo 18/12/2014, 20:24
 
Fecha de Ingreso: diciembre-2014
Mensajes: 1
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: imprimir con java y printjob

Me podrías mandar el código con comentarios lo necesito para un proyecto de la escuela y no tengo experiencia trabajando con impresoras... porfis sálvame la vida :) :) [email protected] o [email protected] a cualquiera de los dos correos porfa porfa

Etiquetas: printjob
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:48.