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

ayuda con impresion en java

Estas en el tema de ayuda con impresion en java en el foro de Java en Foros del Web. buen dia foristas hoy consulto a ustedes para saber si alguien me puede orientar con lo siguiente: quisira saber como se puede imprimir en una ...
  #1 (permalink)  
Antiguo 14/01/2011, 07:52
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
ayuda con impresion en java

buen dia foristas hoy consulto a ustedes para saber si alguien me puede orientar con lo siguiente:


quisira saber como se puede imprimir en una etiquetadora sea el tamaño q sea y la marca q sea el detalle esta en q con java se diseñe o se de los limites de la hoja por decir una etiqueta tiene la medida de 3 X 3 pulgadas y dentro de esas dimensiones poner la informacion q requiere dicha etiqueta a base de ciertas especificaciones de un plano de etiqueta q se proporciona

ya sea con ireports, si es q se puede dar las dimensiones del papel, o usando un bean y diseñar el contenido con jsp, como para hacer una pagina de diseño, o con puro codigo java

no se si este tema vaya aqui, ya q lo que necesito es en base a java no se me ocurrio otro lugar

si alguien sabe como hacerlo se los agradeceria infinitamente

gracias.

espero alguien pueda ayudarme
  #2 (permalink)  
Antiguo 31/01/2011, 15:20
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: ayuda con impresion en java

o simplemente poder imprimir en esas dimensionies con java a puro codigo tengo este codigo hasta el momento el cual me dibuja un rectangulo y, para lo q quiero, puedo usar ese cuadro para establecer mis limites pero como puedo haerle para q en ese mismo cuadro en cualquier posicion q yo quiera meterle texto o imagen

este es mi codigo

Código Java:
Ver original
  1. private class IntroPage implements Printable {
  2.     public int print(Graphics g, PageFormat pageFormat, int page) {
  3.     Graphics2D g2d = (Graphics2D) g;
  4.     Graphics2D g2d2 = (Graphics2D) g;
  5.      g2d.translate(pageFormat.getImageableX(), pageFormat
  6.           .getImageableY());
  7.  g2d.setPaint(Color.black);
  8.  Rectangle2D.Double border = new Rectangle2D.Double(0, 0, 68, 39);
  9.  Rectangle2D.Double border2 = new Rectangle2D.Double(69, 69, 68, 39);
  10.       g2d.draw(border);
  11.       g2d2.draw(border2);
  12.       String titleText = "9001";
  13.       Font titleFont = new Font("helvetica", Font.BOLD, 14);
  14.       g2d.setFont(titleFont);
  15.        String titleText2 = "9001";
  16.       Font titleFont2 = new Font("helvetica", Font.BOLD, 14);
  17.         g2d2.setFont(titleFont2);
  18.  FontMetrics fontMetrics = g2d.getFontMetrics();
  19.  FontMetrics fontMetrics2 = g2d2.getFontMetrics();
  20.       double titleX = (68 / 2)-(39 / 2);
  21.       double valor=POINTS_PER_INCH/24.5;
  22.       double val=valor*14;
  23.       double titleY = val/2;
  24.       double titleX2 = (68 / 2)-(39 / 2);
  25.       double valor2=POINTS_PER_INCH/24.5;
  26.       double val2=valor2*14;
  27.       double titleY2 = val2/2;
  28.       g2d.drawString(titleText, (int) titleX, (int) titleY);
  29.       g2d2.drawString(titleText2, (int) titleX2, (int) titleY2);
  30.       return (PAGE_EXISTS);
  31.    }
  32.   }

la idea de este codigo es q me imprima un rectangulocon el texto 9001 en el centro y debajo de este otro rectangulo dejando una separacion de un cm por asi decirlo

no se que estoy haciendo mal pero si me imprime los dos rectangulos pero desfazados no como quiero

si alguien puede ayudarme se los agradeceria y si no pues tambien

gracias
  #3 (permalink)  
Antiguo 08/02/2011, 08:05
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: ayuda con impresion en java

ya solucione este problema ahora si alguien puede ayudarme a saber como enviarle a la funcion printjob la impresora a la que quiero imprimir

hasta ahorita solo he podido imprimir en la impresora q esta como predeterminada y lo que quiero es q si tengo dos impresoras poder mandar imprimir a la que yo quiera sin q me salga el cuadro de diaolo donde escojo a cual impresora enviar

gracias de antemano
  #4 (permalink)  
Antiguo 08/02/2011, 11:05
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
Información Respuesta: ayuda con impresion en java

Mira yo realize algo parecido para imprimir boletas
pero no implemente la interface Printable
Código Javascript:
Ver original
  1. public class ImprimirBoletas {
  2.  
  3.     private Font fuente;
  4.     private PrintJob pj;
  5.     private Graphics pagina;
  6.     private int incX;
  7.     private int incY;
  8.     private Pedido boleta;
  9.     private Vector<ItemPedido> items;
  10.  
  11.     public ImprimirBoletas(Pedido boleta) {
  12.         try {
  13.             incX = 40;
  14.             incY = 84;
  15.             this.boleta = boleta;
  16.             this.items = PedidoLogic.listaItemPedido(boleta);
  17.             fuente = new Font("Dialog", Font.PLAIN, 10);
  18.             pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Impresión de Boleta", null);
  19.         } catch (Exception ex) {
  20.             ex.printStackTrace();
  21.         }
  22.     }
  23.  
  24.     public void imprimir() {
  25.         Cliente cliente = null;
  26.         CNatural cnatural = null;
  27.         ItemPedido item = null;
  28.         Producto producto = null;
  29.         try {
  30.             pagina = pj.getGraphics();
  31.             pagina.setFont(fuente);
  32.             pagina.setColor(Color.black);
  33.             cliente = boleta.getCliente();
  34.             if (cliente.getTipoCliente() == TipoCliente.NATURAL) {
  35.                 cnatural = (CNatural) cliente;
  36.                 pagina.drawString(cnatural.getNombres(), incX, incY);
  37.                 pagina.drawString(Utilitarios.getStringFecha(boleta.getFechaEmision()), incX + 110, incY);
  38.                 pagina.drawString(cnatural.getDireccion(), incX, incY + 15);
  39.                 pagina.drawString(cnatural.getDni(), incX, incY + 39);
  40.             }
  41.             //////////////////////
  42.             //Productos
  43.             int altura = 68;
  44.             double importe = .0,  total = .0;
  45.             incX=20;
  46.             for (int i = 0; i < items.size(); i++) {
  47.                 item = items.get(i);
  48.                 producto = item.getProducto();
  49.                 pagina.drawString(item.getCantidad() + "", incX, incY + altura);
  50.                 pagina.drawString(producto.getNombre(), incX + 30, incY + altura);
  51.                 importe = Utilitarios.getRedondeo(item.getPrecioUnitario() * item.getCantidad());
  52.                 total += importe;
  53.                 pagina.drawString(importe + "", incX + 140, incY + altura);
  54.                 altura += 15;
  55.             }
  56.             incY += 100;
  57.             pagina.drawString(total + "", incX + 140, incY + 20);
  58.             pagina.dispose();
  59.             pj.end();
  60.         } catch (Exception e) {
  61.             JOptionPane.showMessageDialog(null, "Impresión cancelada...", "Aviso",
  62.                     JOptionPane.WARNING_MESSAGE);
  63.         }
  64.     }
  65. }
cada vez q quiero utilizar instancio la clase y llamamo el metodo imprimit
  #5 (permalink)  
Antiguo 08/02/2011, 12:09
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: ayuda con impresion en java

ok muy buena tu forma de imprimir de echo es mas practica pero el detalle q me encuentro esta en q voy a tener dos impresoras de etiquetas una para etiquetar productos(impresora 1) y otra para etiquetar cajas (impresora2) y en mi sistema un contador q al imprimir por decir 20 etiquetas de producto me imprima una de caja en automatico por lo que necesito mandarle al printjob el nombre de la impresora a la que quiero imprimir

ejemplo

por decir le doy a un boton q me imprima una etiqueta de producto entonces mi boton me manda imprimir mi metodo de impresion y mi sistema tiene un contador q se incrementa cada q mi impresora 1 imprime una etiqueta y cuando llegue mi contador a 20, por decir algo, me va a imprimir una etiqueta en mi impresora 2

la pregunta es como mandarle el nombre de la impresora al metodo printjob de java o a algun otro metodo del printjob
  #6 (permalink)  
Antiguo 11/02/2011, 15:20
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: ayuda con impresion en java

ayuda x favor!!!!!!!!!
  #7 (permalink)  
Antiguo 12/02/2011, 14:21
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: ayuda con impresion en java

Hola,

Posiblemente,

Código Java:
Ver original
  1. import java.awt.print.PageFormat;
  2. import java.awt.print.Printable;
  3. import java.awt.print.PrinterException;
  4. import java.awt.print.PrinterJob;
  5. import java.util.Locale;
  6. import javax.print.PrintService;
  7. import javax.print.PrintServiceLookup;
  8. import javax.print.attribute.HashPrintServiceAttributeSet;
  9. import javax.print.attribute.PrintServiceAttributeSet;
  10. import javax.print.attribute.standard.PrinterName;
  11.  
  12. ....
  13.  
  14.         PrinterJob job = PrinterJob.getPrinterJob();
  15.         job.setPrintable(new MyDocPrinter());
  16.         PrintServiceAttributeSet attributes = new HashPrintServiceAttributeSet();
  17.         PrinterName printerName = new PrinterName("Adobe PDF", Locale.getDefault());
  18.         attributes.add(printerName);
  19.         PrintService printers[] = PrintServiceLookup.lookupPrintServices(null, attributes);
  20.         try {
  21.             if (printers.length == 1)
  22.                 job.setPrintService(printers[0]);
  23.             job.print();
  24.         } catch (PrinterException ex) {
  25.             System.out.println(ex);
  26.         }
Saludos,
  #8 (permalink)  
Antiguo 14/02/2011, 11:37
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: ayuda con impresion en java

HackmanC

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

espero les sirva

Suerte

Etiquetas: impresion
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 11:09.