hola foro como andan espero que bien, bueno les cuento la situación en la que me encuentro, estoy mandando a imprimir unos reportes hechos en
ireport los reportes están listos por ese lado no hay problema, entonces para mandarlos a imprimir directo a la impresora lo hago con el siguiente código
Código:
String filejasper = System.getProperty("user.dir")+"/src/programasie/REPORTES/"+nombreReporte+".jasper";
JasperReport reporte = (JasperReport) JRLoader.loadObject( filejasper );
JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parameters);
JasperPrintManager.printReport(jasperPrint,true);
el problema es que el reporte al imprimirlo de la siguiente forma la impresora lo imprime pero un tanto desfasado, el reporte lo tengo configurado en tamaño LETTER y con margenes de 20 mm en cada lado, pero esta pasando algo raro si yo a la impresora predeterminada le establezco en las opciones de impresión predeterminada, el papel LETTER hay si lo imprime bien, sale perfecto el reporte, pero yo quiero estar configurando eso manual entonces buscando y buscando encontré lo siguiente:
encontré la forma de enviarle las opciones de impresión a la impresora predeterminada con siguiente codigo
Código:
// obtiene la impresora que esta actualmente predetermianda
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
PrintService impresoraPredeterminada = PrintServiceLookup.lookupDefaultPrintService();
//----las opcionesd que me interesan configurar de la impresora
printRequestAttributeSet.add(MediaSizeName.NA_LETTER);
printRequestAttributeSet.add(new Copies(1));
printRequestAttributeSet.add(Chromaticity.MONOCHROME);
printRequestAttributeSet.add(OrientationRequested.PORTRAIT);
printRequestAttributeSet.add(new PrinterResolution(116, 116, ResolutionSyntax.DPCM));
JRPrintServiceExporter exporter;
exporter = new JRPrintServiceExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
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.FALSE);
exporter.exportReport();
una de las opciones que le puedo configurar hay seria la de
PrinterResolution que parece ser que es como la escala de impresión si no me equivoco, ese valor que coloque hay de (116, 116) lo encontré al tanteo osea probando y probando, lo que quiero saber es como hago para encontrar ese valor de la resolución para que mi reporte salga completo en mi hoja, no al tanteo por que hay cuadro perfecto pero si lo voy a imprimir en otra impresora deduzco que no va ser e mismo, o mas bien desde estas opciones como hago para que me imprima a una escala determinada la impresora a la cual va a imprimir el reporte.