java windows 打印机_使用Java中的客户端计算机打印机(不是部署应用程序的服务器)进行打印...

本文档描述了一个Spring应用中使用Java 8实现客户端PDF打印的挑战。目标是让用户选择多个PDF文档并通过Java Service Print API在本地客户端打印机上打印,但遇到了问题。作者提到了浏览器的限制以及尝试使用Applet的失败,并分享了当前使用的代码片段,该代码尝试查找默认的打印服务。然而,这种方法只在服务器上安装了打印机并且设为默认时才有效。
摘要由CSDN通过智能技术生成

我使用Spring开发了一个使用Java 8的应用程序 . 用户故事是客户端应该选择要打印的许多文档(PDF),然后按一个按钮并将它们全部打印到默认的客户端机器打印机(浏览器中的Ctrl P功能在尝试打印时遇到问题't accomplish this requirement). But, I' m CLIENT MACHINE 打印机使用Java Service Printer API . 根据文档,JPS API也应该在客户端运行(据我所知),但我不能使这个工作:

我已经看到了其他一些选项,比如使用Applet,但这个选项在浏览器的浏览版本中被阻止(至少在Chrome中) .

如果还有其他替代方案,请告诉我如何实施它们:

这是我正在使用的代码:

@GetMapping(value = Constantes.IMPRIMIR_FACTURA)

@CrossOrigin(origins = "*")

public void imprimirFacturas(@PathVariable("fechaFacturacion") String fechaFacturacion,

@RequestParam("polizas") String polizas,

@RequestParam("ordenarPor") String ordenarPor,

@RequestParam("directorId") String directorId,

@RequestParam("gerenteId") String gerenteId,

@RequestParam("intermediarioId") String intermediarioId,

@RequestParam("frecuenciaDePagoId") String frecuenciaDePagoId,

@RequestParam(value = "imprimePortada", defaultValue = "false") String imprimePortada,

@RequestParam(value = "imprimeDetalle", defaultValue = "false") String imprimeDetalle,

@RequestParam(value = "imprimeMovimientos", defaultValue = "false") String imprimeMovimientos,

HttpServletResponse response) throws IOException {

String[] split = polizas.split(",");

String ordenByDelReporte = determinarOrden(ordenarPor);

try {

List polizasString = Arrays.asList(split);

PrintService printService = PrintServiceLookup.lookupDefaultPrintService();

boolean efectuarImpresion = false;

if (Objects.isNull(printService))

throw new PrinterAbortException("No existe impresora por defecto.");

for (String numeroPoliza : polizasString) {

FacturaDto facturaDto = new FacturaDto()

.imprimePortada(imprimePortada).imprimeDetalle(imprimeDetalle).imprimeMovimientos(imprimeMovimientos)

.ordenarPor(ordenByDelReporte).conFechaFacturacion(fechaFacturacion)

.numeroPoliza(numeroPoliza);

facturaDto.setDirectorId(directorId);

facturaDto.setGerenteId(gerenteId);

facturaDto.setIntermediarioId(intermediarioId);

facturaDto.setFrecuenciaDePagoId(frecuenciaDePagoId);

byte[] objPDF = generarPorPdf(facturaDto);

if (objPDF.length == Constantes.CERO)

continue;

efectuarImpresion = true;

Doc pdf = new SimpleDoc(objPDF, DocFlavor.BYTE_ARRAY.AUTOSENSE, null);

printService.createPrintJob().print(pdf, new HashPrintRequestAttributeSet());

}

if (!efectuarImpresion)

response.setStatus(333);

} catch (Exception e) {

LOGGER.error(Constantes.ERROR, e);

response.sendError(500, e.getMessage());

}

}

只有在服务器上安装并选择打印机作为默认打印机时,此方法才有效 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值