A logo showing the text blog.marcnuri.com
English
Inicio»Java»Elegir una impresora programáticamente en Jasper Reports

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Elegir una impresora programáticamente en Jasper Reports

2007-03-22 en Java / Antiguo etiquetado BI / Jasper / Jasper Reports / Java / Informes / Swing por Marc Nuri | Última actualización: 2025-01-13
English version

Jasper Reports es, en mi opinión, uno de los mejores motores de informes disponibles para Java. ¡Es potente, flexible y de código abierto! La página oficial del proyecto ofrece amplia documentación para ayudarte a crear informes simples y avanzados. Para obtener orientación adicional, puedes comprar guías o soporte técnico de JasperSoft.

En esta publicación, exploraremos cómo elegir una impresora y imprimir informes programáticamente utilizando Jasper Reports. Veamos un ejemplo que demuestra cómo lograrlo.

JasperReportsPrinter.java
public class JasperReportsPrinter {
  public void printReport() {
    // Fill the JasperPrint object with data
    JasperPrint print = JasperFillManager.fillReport(
        JasperReportsPrinter.class.getResource("/classpath/yourReport.jasper").getPath(),
        new HashMap(), new YourReportDataSource());
    PrinterJob job = PrinterJob.getPrinterJob();
    // Retrieve available print services
    PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
    int selectedService = 0;

    // Find a print service by name that matches our criteria
    for (int i = 0; i < services.length;i++) {
      if (services[i].getName().toUpperCase().contains("Your printer's name")) {
        // Select the first service that matches our criteria
        selectedService = i;
        break;
      }
    }
    job.setPrintService(services[selectedService]);

    // Set up print attributes
    PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
    printRequestAttributeSet.add(MediaSize.findMedia(4, 4, MediaPrintableArea.INCH));
    printRequestAttributeSet.add(new Copies(1));

    // Configure the JRPrintServiceExporter
    JRPrintServiceExporter exporter = new JRPrintServiceExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
    /* We set the selected service and pass it as a parameter */
    exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE,
        services[selectedService]);
    exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
        services[selectedService].getAttributes());
    exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,
        printRequestAttributeSet);
    exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,
        Boolean.FALSE);
    exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,
        Boolean.TRUE);

    // Export the report to the printer
    exporter.exportReport();
  }
}

Puntos clave

  1. Generar el objeto JasperPrint:
    El objeto JasperPrint es la representación central de tu informe rellenado. Este paso implica proporcionar la ruta al archivo .jasper y pasar la fuente de datos requerida.
  2. Recuperar la lista de impresoras disponibles:
    Utiliza PrintServiceLookup.lookupPrintServices() para obtener la lista de impresoras disponibles. Luego puedes iterar a través de la lista para encontrar una impresora por nombre.
  3. Configurar los atributos de impresión:
    Utiliza PrintRequestAttributeSet para establecer atributos como el tamaño del papel (por ejemplo, A4) y el número de copias.
  4. Configurar el exportador:
    El JRPrintServiceExporter se configura con el servicio de impresión seleccionado y los atributos. Maneja la comunicación real con la impresora.
  5. Iniciar la impresión:
    El método exportReport() envía el informe a la impresora. Opcionalmente, puedes suprimir los cuadros de diálogo de impresión y página.

Conclusión

Con el código anterior, puedes elegir eficientemente una impresora programáticamente e imprimir informes utilizando Jasper Reports. Este enfoque no solo agiliza el proceso de impresión, sino que también proporciona la flexibilidad para personalizar la configuración de la impresora dinámicamente. Ya estés desarrollando aplicaciones empresariales o proyectos a pequeña escala, este método garantiza una integración perfecta con tus flujos de trabajo de impresión.

Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Aplicación Java para copias de seguridad programadas de PostgreSQL usando pg_dump (Sólo Windows)Desactivar evento tecla Enter en JTable
© 2007 - 2025 Marc Nuri