Я разрабатываю веб-приложение с помощью jsf, и я создал файл отчета jasper с помощью iReport.Можно ли печатать jasper-файл с сервера java-сервера на стороне клиента?
Я пытаюсь распечатать этот файл автоматически (при нажатии кнопки метод отправляет файл непосредственно на принтер по умолчанию, выбранный в системе).
Моя проблема заключается в том, что печать на стороне сервера (это означает, что, если я лоток для печати от другого пользователя, подключенного к серверу, файл печатается на принтере сервера.
Мой вопрос : есть ли способ печати этих файлов в принтере клиента
это мой код для печати на стороне сервера, но это не работает на стороне клиента, означает, что это напечатано на принтере сервера
import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.HashPrintServiceAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.PrinterName;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
import net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter;
private void PrintReportToPrinter(JasperPrint jp) throws JRException {
// TODO Auto-generated method stub
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
// printRequestAttributeSet.add(MediaSizeName.ISO_A4); //setting page size
printRequestAttributeSet.add(new Copies(1));
System.out.println("01-*********************");
PrintService[] services = PrinterJob.lookupPrintServices();
for (PrintService prnt : services) {
System.out.println(prnt.getName());
}
System.out.println("02-*********************");
PrinterName printerName = new PrinterName(services[0].getName(), null); //gets printer
System.out.println("03-*********************");
PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
printServiceAttributeSet.add(printerName);
System.out.println("04-*********************");
JRPrintServiceExporter exporter = new JRPrintServiceExporter();
System.out.println("05-*********************");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, printServiceAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE);
exporter.exportReport();
}
public String creerRapportUniqueProjet() {
try {
Map<String, Object> param = new HashMap<>();
param.put("rapportNom", "Projet");
param.put("PAR_IMAGE_BACKGROUND", "/reporting/sources/BackgroundElit.png");
param.put("PAR_IMAGE_HEADER", "/reporting/sources/headerElit.png");
System.out.println("1-*********************");
JRDataSource dataSource = new JRBeanCollectionDataSource(reportingProjetViewFacade.findById(projet));
System.out.println("2-*********************");
JasperPrint print = JasperFillManager.fillReport(getClass().getResourceAsStream("/reporting/sources/projectAllDetail.jasper"), param, dataSource);
System.out.println("3-*********************");
//JasperPrintManager.printPage(jp, 0, false);
//JasperPrint jp =reportEngine.fillReport() ;//it returns stream
PrintReportToPrinter(print);//call method
System.out.println("4-*********************");
} catch (JRException e) {
e.printStackTrace();
System.out.println("Exception = " + e);
}
return "";
}
также это релевантно http://stackoverflow.com/questions/8733276/how-to-open-print-dialog-after-pdf-генерированные –
u ошибочны, это не дублируется, я нашел решение после более недели, его просто добавить один СВОЙСТВА в файл jrxml, это СВОЙСТВА являются: /* название недвижимости */ net.sf.jasperreports.export.pdf.javascript /* значение свойства */ this.print ({bUI: true, bSilent: true, bShrinkToFit: false}); –
Это то, что говорит дубликат, не так ли ?, сначала тот, который вы должны использовать pdf, во-вторых, что вы должны использовать javascript в pdf, чтобы открыть диалог ?. Кроме того, я видел, что вы ответили на дубликат этим решением, поэтому, если такие же ответы применяются, это не такая же проблема? –