2012-08-16 13 views
6

Estoy intentando enviar una cadena sencilla ("Hola mundo") a la impresora, pero por alguna razón, sólo se imprime el primer carácter ("H")enviar mensajes de texto sin formato a la impresora predeterminada

Aquí el código

public class CardPrinter { 
    public static void main(String[] args) { 
     try { 
      PrintService mPrinter = null; 
      Boolean bFoundPrinter = false; 

      PrintService[] printServices = PrinterJob.lookupPrintServices(); 

      // 
      // Iterates the print services and print out its name. 
      // 
      for (PrintService printService : printServices) { 
       String sPrinterName = printService.getName(); 
       if (sPrinterName.equals("DTC4000 Card Printer")) { 
        mPrinter = printService; 
        bFoundPrinter = true; 
       } 
      } 

      // Open the image file 
      String testData = "Hello World !"; 
      InputStream is = new ByteArrayInputStream(testData.getBytes()); 
      DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE ; 

      // Find the default service 
      PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 
      System.out.println(service); 

      // Create the print job 
      DocPrintJob job = service.createPrintJob(); 
      Doc doc= new SimpleDoc(is, flavor, null); 

      // Monitor print job events; for the implementation of PrintJobWatcher, 
      PrintJobWatcher pjDone = new PrintJobWatcher(job); 

      // Print it 
      job.print(doc, null); 

      // Wait for the print job to be done 
      pjDone.waitForDone(); 

      // It is now safe to close the input stream 
      is.close(); 
     } catch (PrintException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    static class PrintJobWatcher { 
     // true iff it is safe to close the print job's input stream 
     boolean done = false; 

     PrintJobWatcher(DocPrintJob job) { 
      // Add a listener to the print job 
      job.addPrintJobListener(new PrintJobAdapter() { 
       public void printJobCanceled(PrintJobEvent pje) { 
        allDone(); 
       } 
       public void printJobCompleted(PrintJobEvent pje) { 
        allDone(); 
       } 
       public void printJobFailed(PrintJobEvent pje) { 
        allDone(); 
       } 
       public void printJobNoMoreEvents(PrintJobEvent pje) { 
        allDone(); 
       } 
       void allDone() { 
        synchronized (PrintJobWatcher.this) { 
         done = true; 
         PrintJobWatcher.this.notify(); 
        } 
       } 
      }); 
     } 
     public synchronized void waitForDone() { 
      try { 
       while (!done) { 
        wait(); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 
    } 
} 

¿Alguna idea?

Respuesta

5

Adición de un avance de página,

String testData = "Hello World !\f"; 

resuelto el problema

+0

¿Puede usted por favor verifica por lo que su no imprimir nada a mi impresora? – YumYumYum

+1

¿Cómo, exactamente, puedo _I_ verificar su impresora? :-) – Shai

+0

Puedo darte teamviewer? con webcam? porque el código no está funcionando señor. – YumYumYum

Cuestiones relacionadas