服务器是 ARM 架构的。html 的主要内容是 echarts 。
服务器是 ARM 架构的。html 的主要内容是 echarts 。
|
tool2dxSep 4, 2024
1
无头调用 chrome 的内置 api 截图功能,echarts 强依赖 js 运行期,又没办法直接解析文件的。
有个叫 devtools-protocol 协议,可以通过 websocket 发送控制命令,并下载 jpeg 截图。 |
|
2
偶是用 go 动态生成 html 的 echart 然后转图片再插入 pdf ,用的是 docker 的 lampnick/doctron ,实测 arm 能用,一秒三五张连续转了几万张也没出问题
|
|
GilfoylekSep 4, 2024
3
刚做过类似功能 [chromedp]( https://pkg.go.dev/github.com/chromedp/chromedp) 我们用的是 golang 的包
|
|
money1991Sep 4, 2024
4
docker 里跑 Puppeteer ,它有转图片 api ,非常方便
|
|
PolarBearsSep 4, 2024
5
playwright
|
|
dudubabaSep 4, 2024
6
一般都是 html 转 canvas 转图片,或者转 pdf 再拆分图片,都有现成的库吧。
|
|
xiaoriri666Sep 4, 2024
7
直接用 serverless ,阿里云直接部署个,就是冷启动有点慢,如果量不是很大可以用
|
|
arthurblakeSep 4, 2024
8
python 之 selenium ,我现在就用这个定时发送图表
|
|
moxiaonaiSep 4, 2024
9
playwright, puppeteer 之类的,缺点是内存占用有点大,qps 大的话,服务容易崩
|
|
10
因为程序使用的 python ,目前用的 pyppeteer 无头调用 chrome 生成图片。但是有个问题,在 https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html 下载 mac 和 Windows 对对应的 chrome 包,然后在对于系统代码运行都没问题,可以生成图片。但是下载 linux_x64 的包在 x64 服务器上运行就报错了(我是想先在 x64 架构的服务器运行测试通过再去尝试 ARM 架构的)。
大佬知道是什么原因吗?还有你说的这个“devtools-protocol 协议,可以通过 websocket 发送控制命令”哪里可以参考吗?感谢🙏 @tool2dx |
|
tool2dxSep 4, 2024
11
@AlanBrian https://github.com/ChromeDevTools/awesome-chrome-devtools
我是抓页面数据没办法,要用到 websocket 的 devtools 协议。一般截图用 api 就够了,不用上这个协议的。 |
|
haoyunyinglaiSep 4, 2024
12
selenium + firefox 无头浏览器 部署在 arm 架构的国产化操作系统上跑过
|
|
horizonSep 4, 2024
13
@wangbin526 #2
清晰度有问题没 |
|
kenilalexandraSep 4, 2024
14
屏幕截图不行?
|
|
makerbiSep 4, 2024
16
Python 的话 Playwright 就可以,我是和你完全一样的需求,需要渲染 ECharts 图表,部署在阿里云函数,每次调用平均用时 4 秒的样子。
|
|
haoyunyinglaiSep 4, 2024
17
|
|
s2555Sep 4, 2024
18
imgkit ,我上个帖子发的字帖生成就用这个,先生成 html ,再转成图片
|
|
hetalSep 4, 2024
19
|
|
OldletterSep 4, 2024
20
你的 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(); })(); ``` 环境需要你自己搭建下 |
|
YH0Y9W0Eyg9LR683Sep 4, 2024
21
|
|
xcsoftSep 4, 2024
22
go 的 chromeDP 也可以
|
|
mikewangSep 5, 2024
24
以前用过 wkhtmltoimage ,不过现在看起来已经 archive 了
|
|
LuckyLauncherSep 5, 2024
25
实际上你的需求是如何在服务器上运行 dom like 的 js
看上去是 html 其实是 echarts 渲染出来的 canvas/svg 按道理来讲只要实现了你用到的 js API 然后重新 echarts 的 render 函数是可以直接生成图片的 不过这种方案比较复杂,好处就是不像浏览器那样占资源 |
|
iv8dSep 5, 2024
26
生成 pdf 然后截图试试??
|
|
DongxiaohaoSep 5, 2024
27
我们用的 puppeteer 这个依赖,很好用。截图效果很好
|
|
LatinSep 5, 2024
28
|
|
zhupengSep 5, 2024
29
自己用过 pyppeteer ,感觉还行,特别的页面会出问题。
|