8000 GitHub - gouflv/sspc: Page capture on the Server-side
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

gouflv/sspc

Repository files navigation

网页截图与 PDF 生成服务

一、服务简介

基于服务端浏览器技术(Chrome Headless),实现网页截图与 PDF 生成能力

在线体验(需VPN)

二、核心功能

2.1 网页截图功能

  • 支持全 8B01 截图与指定元素截图
  • 模拟不同设备(手机、平板、PC),支持自定义分辨率和 UA

应用场景:

  • Word 文档插图:通过浏览器渲染图表(Echart、G2)或复杂组件,截图生成配图,插入文档
  • 网页预览、归档

2.2 PDF 生成功能

  • 基于浏览器打印功能,输出高质量 PDF

  • 支持排版特性:

    • 全屏图片:封面、页面背景
    • 页眉:支持网页原生样式与布局
    • 分页控制:使用 CSS 打印规则(如 page-break-before),实现内容自动分页、章节分隔、避免内容断裂

应用场景:

  • 标准化文档生成:如报告、表单等,支持图表(Echart、G2)
  • 多场景复用(同构):一套页面实现,既能满足用户在线查看,也能满足后端 PDF 批量导出、归档

三、技术实现

  • 技术栈:Chrome Headless + Puppeteer + Node.js
  • 特性
    • 浏览器实例池化:降低启动延迟
    • 任务队列:并发限流,支持异步处理大批量任务
  • Docker 镜像化

对比其他方案

1. 网页截图

方案类型 工具 问题
浏览器渲染 Selenium 仅部分支持

2. PDF 生成

方案类型 工具 问题
基于编码 iText / PDFBox 开发复杂度高,设计还原度低
HTML 转 PDF iText / OpenHTMLToPDF 基于静态解析,无法执行 JS,仅支持 CSS2.1
浏览器渲染 wkhtmltopdf 基于旧版 QtWebKit(相当于 Chrome 50),对现代网页支持差
Selenium 依赖浏览器兼容层,效率低。更偏向自动化测试场景

四、性能评估

测试环境: 单个 Docker 容器(分配 10 个 CPU 核心,8G 内存),队列并发数 4

测试用例:“百度新闻首页”为目标页面生成 PDF,请求并发数 20

延迟统计

指标 2.5% 50% 97.5% 99% 平均 标准差 最大值
延迟 (ms) 6816 14555 18589 18675 13772.79 2535.12 18675

请求统计

指标 1% 2.5% 50% 97.5% 平均 标准差 最小值
请求数/秒 0 0 1 4 1.25 1.32 1
传输速率 0 B 0 B 1.12MB 4.5MB 1.4MB 1.47MB 1.12MB

五、部署和调用

示例

curl --request POST \
  --url http://10.0.28.121:3001/jobs/urgent \
  --header 'Content-Type: application/json' \
  --data '{
	"pages": [
		{
			"url": "https://news.baidu.com/",
			"name": "example"
		}
	],
}'

About

Page capture on the Server-side

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0