服务器是 ARM 架构的。html 的主要内容是 echarts 。
|  |      1tool2dx      2024-09-04 10:30:31 +08:00 无头调用 chrome 的内置 api 截图功能,echarts 强依赖 js 运行期,又没办法直接解析文件的。 有个叫 devtools-protocol 协议,可以通过 websocket 发送控制命令,并下载 jpeg 截图。 | 
|      2wangbin526      2024-09-04 10:35:14 +08:00 via Android  1 偶是用 go 动态生成 html 的 echart 然后转图片再插入 pdf ,用的是 docker 的 lampnick/doctron ,实测 arm 能用,一秒三五张连续转了几万张也没出问题 | 
|  |      3Gilfoylek      2024-09-04 10:37:46 +08:00 刚做过类似功能 [chromedp]( https://pkg.go.dev/github.com/chromedp/chromedp) 我们用的是 golang 的包 | 
|      4money1991      2024-09-04 10:38:32 +08:00 docker 里跑 Puppeteer ,它有转图片 api ,非常方便 | 
|  |      5PolarBears      2024-09-04 10:39:49 +08:00 playwright | 
|  |      6dudubaba      2024-09-04 10:51:13 +08:00 一般都是 html 转 canvas 转图片,或者转 pdf 再拆分图片,都有现成的库吧。 | 
|  |      7xiaoriri666      2024-09-04 10:55:51 +08:00 直接用 serverless ,阿里云直接部署个,就是冷启动有点慢,如果量不是很大可以用 | 
|  |      8arthurblake      2024-09-04 11:06:12 +08:00 python 之 selenium ,我现在就用这个定时发送图表 | 
|  |      9moxiaonai      2024-09-04 11:08:15 +08:00 playwright, puppeteer 之类的,缺点是内存占用有点大,qps 大的话,服务容易崩 | 
|  |      10AlanBrian OP 因为程序使用的 python ,目前用的 pyppeteer 无头调用 chrome  生成图片。但是有个问题,在 https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html 下载 mac 和 Windows 对对应的 chrome 包,然后在对于系统代码运行都没问题,可以生成图片。但是下载 linux_x64 的包在 x64 服务器上运行就报错了(我是想先在 x64 架构的服务器运行测试通过再去尝试 ARM 架构的)。  大佬知道是什么原因吗? 还有你说的这个“devtools-protocol 协议,可以通过 websocket 发送控制命令”哪里可以参考吗?感谢🙏 @tool2dx | 
|  |      11tool2dx      2024-09-04 11:19:25 +08:00 @AlanBrian https://github.com/ChromeDevTools/awesome-chrome-devtools 我是抓页面数据没办法,要用到 websocket 的 devtools 协议。一般截图用 api 就够了,不用上这个协议的。 | 
|  |      12daxin945      2024-09-04 11:24:13 +08:00 selenium + firefox 无头浏览器 部署在 arm 架构的国产化操作系统上跑过 | 
|      13horizon      2024-09-04 11:27:32 +08:00 @wangbin526 #2  清晰度有问题没 | 
|  |      14kenilalexandra      2024-09-04 11:38:32 +08:00 屏幕截图不行? | 
|  |      16makerbi      2024-09-04 12:19:46 +08:00 Python 的话 Playwright 就可以,我是和你完全一样的需求,需要渲染 ECharts 图表,部署在阿里云函数,每次调用平均用时 4 秒的样子。 | 
|  |      17daxin945      2024-09-04 13:53:04 +08:00 | 
|  |      18s2555      2024-09-04 14:31:53 +08:00 imgkit ,我上个帖子发的字帖生成就用这个,先生成 html ,再转成图片 | 
|      19hetal      2024-09-04 14:45:22 +08:00 | 
|      20Oldletter      2024-09-04 15:20:18 +08:00 你的 arm 和 x64 还有问题呢(深度踩坑),应该 arm64 上的 pyppeteer 调用 chrome(开源的那个有问题),我之前写的是 pyppeteer 调用 firefox  Dockerfile ``` FROM node:16 # examples: https://github.com/puppeteer/puppeteer/blob/main/docker/Dockerfile RUN apt-get update \ && apt-get install -y wget gnupg firefox-esr fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-khmeros fonts-kacst fonts-freefont-ttf libxss1 ENV PUPPETEER_PRODUCT=firefox WORKDIR /home/app COPY ./package.json /home/app COPY ./firefox.js /home/app RUN npm install RUN mkdir screenshots CMD echo “Hello World” ``` 调用 ``` const puppeteer = require('puppeteer-core'); (async() => { const browser = await puppeteer.launch({ product: 'firefox', headless: true, executablePath: "/usr/bin/firefox", defaultViewport: { width: 1700, height: 800 }, args: [ ] }); const page = await browser.newPage(); await page.goto('https://www.baidu.com/'); console.log('saving baidu screenshot'); await page.screenshot({ path: 'screenshots/baidu.png', fullPage: true }); await browser.close(); })(); ``` 环境需要你自己搭建下 | 
|  |      21YH0Y9W0Eyg9LR683      2024-09-04 15:25:18 +08:00 | 
|  |      22xcsoft      2024-09-04 15:33:39 +08:00 go 的 chromeDP 也可以 | 
|      23seeu2ex      2024-09-04 22:14:44 +08:00 via iPhone @dudubaba html2canvas 好像清晰度有问题,以前用过,后端不给下载,直接调这个下图片😹 | 
|  |      24mikewang      2024-09-05 00:40:53 +08:00 以前用过 wkhtmltoimage ,不过现在看起来已经 archive 了 | 
|      25LuckyLauncher      2024-09-05 08:46:00 +08:00 实际上你的需求是如何在服务器上运行 dom like 的 js 看上去是 html 其实是 echarts 渲染出来的 canvas/svg 按道理来讲只要实现了你用到的 js API 然后重新 echarts 的 render 函数是可以直接生成图片的 不过这种方案比较复杂,好处就是不像浏览器那样占资源 | 
|  |      26iv8d      2024-09-05 10:34:28 +08:00 生成 pdf 然后截图试试?? | 
|  |      27Dongxiaohao      2024-09-05 10:44:28 +08:00 我们用的 puppeteer 这个依赖,很好用。截图效果很好 | 
|  |      28Latin      2024-09-05 12:07:27 +08:00 | 
|  |      29zhupeng      2024-09-05 16:52:59 +08:00 自己用过 pyppeteer ,感觉还行,特别的页面会出问题。 |