Мне нужно отправить pdf-jasper непосредственно на принтер, текущий код PDF делегирован браузеру, и поэтому пользователь может печатать как можно больше копий. Должна разрешить печатать только одну копию, поэтому я решил отправить ее непосредственно на печать. Я искал форум, но не понял, что будет лучшим решением проблемы.Отправить pdf jasper прямо на принтер в веб-приложении
Посмотрите на мой код:
public class UtilRelatorios {
public static void imprimeRelatorio(String relatorioNome,
HashMap parametros) throws IOException, JRException {
FacesContext fc = FacesContext.getCurrentInstance();
ServletContext context = (ServletContext) fc.getExternalContext().getContext();
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
JasperPrint jasperPrint =
JasperFillManager.fillReport(
context.getRealPath("/relatorios")+ File.separator+relatorioNome+".jasper",
parametros);
//int finalPag = jasperPrint.getPages().size();
//System.out.println("page: "+finalPag);
//JasperPrintManager.printPage(jasperPrint,finalPag,false);
byte[] b = null;
//JasperPrintManager.printPage(jasperPrint, 0, false);
try {
b = JasperExportManager.exportReportToPdf(jasperPrint);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
if (b != null && b.length > 0) {
// Envia o relatório em formato PDF para o browser
response.setContentType("application/pdf");
int codigo = (int) (Math.random()*1000);
response.setHeader("Content-disposition","inline);filename=relatorio_"+codigo+".pdf");
response.setContentLength(b.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(b, 0, b.length);
ouputStream.flush();
ouputStream.close();
}
}
}
Я хочу отправить непосредственно на принтер по умолчанию на клиентской машине. Поскольку я не могу контролировать его через ваш браузер, думал иначе: * Пользователь нажимает печать * Если Ф во временную папку * Направлен на принтер по умолчанию, а затем исключить файл каталог Может ли вы помочь мне с это? – csf
Только один способ гарантировать, что пользователь будет печатать только один раз, будет заключаться в том, что вы разрабатываете какой-то активныйX или другой плагин ... java web start ... –
Я разработал апплет для печати отчета, но я не могу работать в браузере дает ошибку, не поддерживаемую плагином, вы можете помочь мне по проблеме http://stackoverflow.com/questions/33735509/applet-running-in-chrome – csf