node服务通过hiprint生成html代码

node服务通过hiprint生成html代码

方案1:通过node服务使用puppeteer访问本地网页生成模板之后获取网页内容

具体实现方案

  1. 新建一个vue项目加载hiprint改造过的依赖开发一个页面在新建的页面中接受模板的id,通过java接口获取templateJson和printData填充数据后将代码渲染到页面。
  2. 新建一个node服务提供一个接口供后端来调用传入模板的id,node服务通过puppeteer库打开第一步的vue项目页面,当页面渲染后之后获取html代码,再将html返回给后端。

通过以上步骤可以生成hiprint模板的代码,给到后端去生成pdf文件。

存在问题:

  1. 通过puppeteer来模拟浏览器环境和操作存在性能问题,目前第一次调用接口响应3s+,后续调用均在800ms左右。
  2. 后续node服务运行在服务器上可能存在并发问题。
  3. 如果node服务调用次数过多内存可能会崩,需要制定重启机制。
  4. node服务需要有日志相关的记录,为后期问题排查提供帮助。
  5. 需要为node服务部署做相关准备工作。

预研demo项目地址:

https://gitee.com/qmxx-demo/hiprint2html.git

参考文档:

  1. puppeteer中文文档: https://pptr.nodejs.cn/
  2. hiprint文档:http://hiprint.io/demo
  3. midwayjs文档:https://midwayjs.org/docs/intro
  4. puppeteer性能优化: a. https://blog.it2048.cn/article-puppeteer-speed-up b. https://blog.csdn.net/weixin_34092455/article/details/91449604

问题记录:

  1. 安装puppeteer时候报错 ==Error: ERROR: Failed to set up chrome-headless-shell v124.0.6367.78! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.== 解决方法:https://blog.csdn.net/weixin_56307657/article/details/134963129
  2. puppeteer读取本地html存在页面加载不了的问题。改为访问远端页面。

方案2:通过electron开发一个应用,通过接口调用去打开页面生成页面之后返回网页内容

打包之后文件体积较大,可能存在性能问题,暂不采用。

上一篇:批量打印功能预研

下一篇:没有了哦

Top