首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python量化交易工程师养成实战金融高薪领域-白日依山尽黄河入海流

前端报表如何完成无预览打印处理计划或静默打印

Python量化交易工程师养成实战金融高薪领域

Python量化交易工程师养成实战金融高薪领域

download:https://www.zxit666.com/5814/

在前端开发中,除了将数据呈现后,我们常常需求为用户提供,打印,导出等才能,导出是为了存档或是二次剖析,而打印则由于很多单据需求打印出来作为主要的单据来停止下一环节的票据支撑, 而前端打印能够说是十分令人头疼的一件事。为什么令大家头疼呢?由于前端打印,要强依赖与阅读器的打印预览页面,会自然存在以下弊端:

每一次打印都要弹出来打印预览对话框,假如前端需求批量打印,那么意味着客户要点击无数个关闭按钮,才干完成批量打印,假如一次性打印几百张上千张的报表,则会成为“NightMare”。

前端打印强依赖于阅读器,主流的思绪是先将内容转换为 PDF 文件,再调用阅读器的打印功用停止打印,而生成 PDF 文件是依赖于阅读器关于字体,边线等的处置,因而阅读器的异同则直接招致打印出来的效果差距很大,有的边线加粗,有的 1 页数据,打印出来呈现 2 页,也是让开发者非常苦恼的事情,关于一些打印请求比拟高的行业,这就是灾难。

因而如何在前端完成无预览打印,也就是用户点击打印之后直接就运用默许打印机打印出来。针对这个需求,我们考证了一个处理该问题的计划,本贴就来引见该计划如何完成。

完成思绪如下:

后端完成一个接口,接纳 Blob 类型 PDF 流,然后调用系统默许打印机,将PDF 停止静默打印。前端应用 ACTIVEREPORTSJS 自带的导出 PDF,导出 Blob 类型,然后经过POST 恳求调用后端接口将 Blob 传播给后端停止打印。

详细完成步骤:

前端完成办法:

前端应用 ActivereportsJS 的 PDF.exportDocument 无预览导出 PDF,该接口返回的 result 包含 data 属性和 download 办法,然后调用后端接口,将result.data 传送给后端。

1. function printPDF() { 2. var ACTIVEREPORTSJS = GC.ActiveReports.Core; 3. var PDF = GC.ActiveReports.PdfExport; 4. 5. var settings = { 6. info: { 7. title: "test", 8. author: "GrapeCity inc.", 9. }, 10. pdfVersion: "1.7", 11. }; 12. 13. var pageReport = new ACTIVEREPORTSJS.PageReport(); 14. pageReport 15. .load("1.rdlx-json") 16. .then(function () { 17. return pageReport.run(); 18. }) 19. .then(function (pageDocument) { 20. return PDF.exportDocument(pageDocument, settings); 21. }) 22. .then(function (result) { 23. let formData = new FormData(); 24. formData.append("file", result.data); 25. fetch("http://localhost:8088/print", { 26. method: 'POST', 27. mode: 'cors', 28. body: formData 29. }) 30. }); 31. }

后端完成方式:

我这边是采用 python 完成了一个接口,接纳前端传送的 Blob 文件流,然后调用后端部署的效劳器默许打印机直接停止静默打印。

后端程序能够部署到效劳器上,假如是 windows 效劳器,能够直接下载 exe,在效劳器上运转。

下载下来是 2 个 exe 程序,需求放在同一个文件夹,然后运转 PrintAgent.exe,切记这两个程序需求放在同一个文件夹。

留意:假如 exe 只给效劳器上部署,那么前端在打印时调用效劳器地址接口打印,最终都会从效劳器上衔接的打印机打出来。

假如 exe 给客户端部署了,那么前端打印就能够代码调用 localhost 地址去打印,最终就会从客户端所衔接的默许打印机打印出来;切换打印机的话,就调整 windows 的默许打印机就能够。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230216A04U1J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券