JasperReports: printing right
Рубрика: JasperReports | 23 March 2007, 16:02 | juriy
Эта небольшая заметка показывает, как вывести отчет на печать, не экспортируя его в промежуточный формат вроде PDF. Этот код я нашел в блоге Marc Nuri. Марк любезно дал согласие опубликовать этот сниппет в нашем блоге. Думаю, этот материал хорошо дополнит серию уроков о JasperReports.
Оригинал статьи: Choosing a printer programmatically in Jasper Reports
public class PrinterTest {
public static void main(String[] args) throws PrinterException, JRException {
JasperPrint print = (JasperPrint) JRLoader.loadObject(
new File("reports/fill/example1.jrprint"));
PrinterJob job = PrinterJob.getPrinterJob();
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
int selectedService = 0;
// В этом блоке выбирается принтер, который
// содержит в своем названии "HP"
for(int i = 0; i < services.length;i++){
if(services[i].getName().contains("HP")){
selectedService = i;
}
}
System.out.println("Selected " + services[selectedService].getName());
// Морально готовим принтер
job.setPrintService(services[selectedService]);
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
MediaSizeName mediaSizeName = MediaSize.findMedia(4, 4, MediaPrintableArea.INCH);
printRequestAttributeSet.add(mediaSizeName);
printRequestAttributeSet.add(new Copies(1));
// Экспортируем
JRPrintServiceExporter exporter;
exporter = new JRPrintServiceExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
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();
System.out.println("Done");
}
}
Посмотрим на код еще раз: сначала выбираются все доступные принт-сервисы. Затем среди доступных принт сервисов выбирается тот, который содержит в названии строку “HP”.
Затем для выбранного сервиса устанавливаются параметры печати: размер бумаги и количество копий.
Затем создается экземпляр JRPrintServiceExporter, который передает отчет принтеру.

Забавно звучит комментарий
// Морально готовим принтер
Спасибо за статью :)