Guest User

Untitled

a guest
Mar 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package mx.hash.impresioninmediata;
  7.  
  8. import com.itextpdf.kernel.geom.PageSize;
  9. import com.itextpdf.kernel.pdf.PdfDocument;
  10. import com.itextpdf.kernel.pdf.PdfWriter;
  11. import com.itextpdf.layout.Document;
  12. import com.itextpdf.layout.element.Paragraph;
  13. import com.itextpdf.layout.element.Table;
  14. import java.awt.print.PrinterException;
  15. import java.awt.print.PrinterJob;
  16. import java.io.ByteArrayInputStream;
  17. import java.io.ByteArrayOutputStream;
  18. import java.io.IOException;
  19. import java.util.logging.Level;
  20. import java.util.logging.Logger;
  21. import javax.print.PrintService;
  22. import javax.print.PrintServiceLookup;
  23. import javax.swing.JOptionPane;
  24. import org.apache.pdfbox.pdmodel.PDDocument;
  25. import org.apache.pdfbox.printing.PDFPageable;
  26.  
  27. /**
  28. *
  29. * @author david
  30. */
  31. public class ImpresionInmediata {
  32.  
  33. private final static Logger LOGGER = Logger.getLogger("mx.hash.impresioninmediata.ImpresionInmediata");
  34.  
  35. static public void main(String[] args) {
  36. ImpresionInmediata printer = new ImpresionInmediata();
  37.  
  38. printer.listarImpresoras();
  39.  
  40. try {
  41. ByteArrayOutputStream documentoBytes = printer.crearDocumentoiText();
  42. printer.imprimir(documentoBytes);
  43. } catch (IOException | PrinterException ex) {
  44. JOptionPane.showMessageDialog(null, "Error de impresion", "Error", JOptionPane.ERROR_MESSAGE);
  45. LOGGER.log(Level.SEVERE, null, ex);
  46. }
  47. }
  48.  
  49. /**
  50. * Envia a imprimir el ByteArrayOutoutStream creado de un documento iText
  51. *
  52. * @param documentoBytes
  53. * @throws IOException
  54. * @throws PrinterException
  55. */
  56. public void imprimir(ByteArrayOutputStream documentoBytes) throws IOException, PrinterException {
  57.  
  58. // Aqui convertimos la el arreglo de salida a uno de entrada que podemos
  59. // mandar a la impresora
  60. ByteArrayInputStream bais = new ByteArrayInputStream(documentoBytes.toByteArray());
  61.  
  62. // Creamos un PDDocument con el arreglo de entrada que creamos
  63. PDDocument document = PDDocument.load(bais);
  64.  
  65. PrintService myPrintService = this.findPrintService("Deskjet-1510-series");
  66. PrinterJob printerJob = PrinterJob.getPrinterJob();
  67.  
  68. printerJob.setPageable(new PDFPageable(document));
  69. printerJob.setPrintService(myPrintService);
  70.  
  71. printerJob.print();
  72.  
  73. }
  74.  
  75. /**
  76. * Muestra en pantalla la lista de todas las impresoras disponibles en el
  77. * sistema
  78. */
  79. public void listarImpresoras() {
  80. PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
  81. System.out.println("Lista de impresoras disponibles");
  82.  
  83. for (PrintService printService : printServices) {
  84. System.out.println("\t" + printService.getName());
  85. }
  86. }
  87.  
  88. /**
  89. * Nos regresa el PrintService que representa la impresora con el nombre que
  90. * le indiquemos
  91. * @param printerName nombre de la impresora que deseamos usar
  92. * @return PrintService que representa la impresora que deseamos usar
  93. */
  94. private PrintService findPrintService(String printerName) {
  95. PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
  96. for (PrintService printService : printServices) {
  97. System.out.println(printService.getName());
  98.  
  99. if (printService.getName().trim().equals(printerName)) {
  100. return printService;
  101. }
  102. }
  103. return null;
  104. }
  105.  
  106. /**
  107. * Crea un documento via la libreria iText y lo almacena como un
  108. * ByteArrayOutputStream
  109. *
  110. * @return Documento iText en formato ByteArrayOutputStream
  111. */
  112. public ByteArrayOutputStream crearDocumentoiText() {
  113. // Es en este ByteArrayOutputStream donde se pone el documento una vez
  114. // que se llama a documento.close()
  115. ByteArrayOutputStream documentoBytes = new ByteArrayOutputStream();
  116.  
  117. PdfWriter pdfWriter = new PdfWriter(documentoBytes);
  118. PdfDocument pdfDoc = new PdfDocument(pdfWriter);
  119.  
  120. Document documento = new Document(pdfDoc, PageSize.LETTER);
  121. documento.add(new Paragraph("Inicia el reporte"));
  122. documento.add(this.crearTabla());
  123.  
  124. documento.close();
  125.  
  126. return documentoBytes;
  127. }
  128.  
  129. private Table crearTabla() {
  130. float[] anchos = {50F, 50F, 50F};
  131. Table tablaEncabezado = new Table(anchos);
  132.  
  133. tablaEncabezado.setWidth(500F);
  134.  
  135. tablaEncabezado.addCell("Hora Inicio");
  136. tablaEncabezado.addCell("Hora Fin");
  137. tablaEncabezado.addCell("");
  138. tablaEncabezado.addCell("Fecha Inicio");
  139. tablaEncabezado.addCell("Fecha Fin");
  140. tablaEncabezado.addCell("Fin de Turno");
  141.  
  142. return tablaEncabezado;
  143. }
  144.  
  145. }
Add Comment
Please, Sign In to add comment