我使用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());

}

}

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

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

  1. java windows域_域环境中的windows软件安装

    这几天要在单位部署一个软件包,是msi形式的,据说可以通过"域推送"的形式安装,搜索了一下,发现需要在 组策略->软件设置->软件安装 里面添加放在共享目录里的软件包. ...

  2. java jar 目录_将Java类路径中的所有jar包括在一个目录中

    有没有一种方法可以将所有的jar文件包含在类路径的目录中? 我正在尝试java -classpath lib / *.jar :. my.package.Program,它无法找到当然在这些罐子里的类 ...

  3. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  4. ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

    我有错误 Exception in thread"main" java.lang.NoClassDefFoundError: 当我尝试在Ubuntu上运行编译类时.我使用的是一个非 ...

  5. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

  6. java关闭端口_使用java代码关闭指定端口的程序-windows

    转载请请在页首注明作者与出处 一:问题由史 今天遇到一个问题,就是在实现自动化灾备的时候,发现原有死掉的程序没有完全关闭,当然这都不是本文的重点,重点是这个时候,我得把它完全关闭,所以才有了这篇文章. ...

  7. java 虚拟打印机_纯java虚拟打印机

    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.print.PageFor ...

  8. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  9. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

最新文章

  1. 外部开发:部件属性 外部exe启动UG NX
  2. jQuery事件2——off取消事件绑定
  3. zigbee传输速率_wifi智能开关和zigbee智能开关有哪些区别
  4. bmp调色板颜色信息重复_如何更改 Linux 终端颜色主题 | Linux 中国
  5. Canvas入门06-线段与像素边界
  6. 我见过的最漂亮代码---通过删除代码来实现功能的提升
  7. Hadoop--xsync分发脚本
  8. BoundsChecker下载
  9. 后缀–ize_后缀-ize,-ise含义、来源和词例
  10. 计算机无法进入操作系统怎么办,老司机教你电脑开机无法进入系统怎么办
  11. thinkphp使用easywechat接入微信公众号
  12. Chinese Whisper 人脸聚类算法实现
  13. android app银联支付,android app 快速接入银联支付流程(android studio版)
  14. SRP简介(SRP--Single-Responsibility Principle):
  15. c8051f020 I/O配置小结
  16. 思科三层交换机配置DHCP中继
  17. 6、英飞凌-AURIX-TC3XX: PWM实验之使用 GTM -ATOM 实现
  18. 本地搭建靶站进行漏洞复现和防御(SQL注入、文件上传、XSS漏洞的多种形式)
  19. 肇庆高考成绩查询2021,2021肇庆市地区高考成绩排名查询,肇庆市高考各高中成绩喜报榜单...
  20. 【安信可A9G专题③】安信可A9G模块连接机智云APP教程;

热门文章

  1. 我的大学之模拟电子技术 No.5
  2. 重装系统计算机无法启动,重装系统电脑无法开机怎么办?重装系统后电脑无法开机常见故障...
  3. 用ASP.NET建立一个在线RSS新闻聚合器
  4. 01 - 嵌入式的学习路线、职业规划:嵌入式基本知识与开发流程
  5. 生产环境SLB-F5会话保持失效问题排查及总结
  6. c语言编程文件的加密解密,C语言实现任何文件的加密解密功能
  7. JAVA简易控制台选择题答题,改自书上代码
  8. JavaScript基础第02天—运算符(操作符)—流程控制—循环—代码规范
  9. 3D游戏编程与设计——粒子系统
  10. 余弦公式在c语言里面怎么用_C语言中求余弦值的相关函数总结