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, который передает отчет принтеру.

Пока один комментарий

One Response to “JasperReports: printing right”

Комментарии:

  1. comrade_Roman

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

    Спасибо за статью :)

Leave a Reply