# MyWeb **Repository Path**: php_project/my-web ## Basic Information - **Project Name**: MyWeb - **Description**: 获取可滚动网页信息下载为pdf或者png - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-28 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 页面存图 / PDF(Chrome / Edge / Firefox 扩展) 基于 **Manifest V3** 的浏览器扩展,兼容 **Google Chrome**、**Microsoft Edge** 与 **Firefox**:将当前网页保存为 **PNG** 或通过多种方式导出 **PDF**。纯本地处理,无账号、无上传、无广告。 ## 功能概览 | 能力 | 说明 | |------|------| | **当前可见区域 PNG** | 截取当前视口为一张图片并下载 | | **整页 PNG** | 滚动拼接整页为一张长图(极长页面会整体缩放以适配画布限制) | | **整页 PDF(拼接)** | 与整页 PNG 同源流程,输出多页高清 PDF | | **系统打印** | 注入脚本后走浏览器打印,可选「另存为 PDF」 | | **整页 PDF(html2canvas)** | 使用 html2canvas + jsPDF 在页面内渲染并导出 | 整页导出在后台进行:扩展图标会显示「···」角标,完成后变为绿色「OK」并配合系统通知(首次使用请允许通知权限);失败时显示红色「!」。导出完成后自动恢复页面原本的滚动位置。 ## 特性 - **纯本地处理**:截图拼接、PDF 合成、下载保存全部在用户本机完成,不向任何服务器上传页面内容。 - **整页高清拼接**:逐屏滚动截图 + 后台 OffscreenCanvas 拼接,比单次 html2canvas 渲染更清晰。 - **无追踪**:无埋点、无分析 SDK、无第三方 CDN 远程代码,所有依赖本地打包于 `vendor/`。 - **开源透明**:代码完全公开,可自行审计。 ## 不适用页面 以下地址无法注入脚本或截图:`chrome://`、`edge://`、`about:`、`chrome-extension://`、`moz-extension://`、`extension://`、`devtools://`、`microsoft-edge:` 等浏览器内部页。 ## 技术栈 - Extension **Manifest V3**(Chrome / Edge:`service_worker`;Firefox:`background.scripts` 事件页;同一套业务逻辑) - [webextension-polyfill](https://github.com/mozilla/webextension-polyfill)(统一 Promise 风格 `browser.*` API) - 最低版本:Chromium **121+** / Firefox **140+**(Android **142+**;满足 AMO 数据收集声明与 `optional_host_permissions`) - [html2canvas](https://github.com/niklasvh/html2canvas)(MIT) - [jsPDF](https://github.com/parallax/jsPDF)(MIT) - 上述库均以 `vendor/` 形式本地打包,不通过 CDN 远程加载 ## 权限说明 | 权限 | 用途 | |------|------| | `activeTab` | 用户点击扩展图标时访问当前标签页 | | `scripting` | 向当前标签页注入内容脚本以执行截图与导出 | | `tabs` | 查询当前活动标签页信息、判断是否为受限页面 | | `downloads` | 将导出的 PNG / PDF 写入下载目录 | | `notifications` | 整页导出完成或失败时弹出系统通知 | 本扩展不收集任何用户数据,详见 [PRIVACY.md](PRIVACY.md)。 ## 本地开发与加载 1. 克隆本仓库后,在项目根目录执行: ```bash npm install ``` 确认 `vendor/browser-polyfill.min.js` 已存在(由 `webextension-polyfill` 拷贝)。 2. 按浏览器加载未打包扩展(同一套代码即可): | 浏览器 | 地址 | 操作 | |--------|------|------| | **Chrome** | `chrome://extensions` | 开启「开发者模式」→「加载已解压的扩展程序」→ 选择本仓库根目录 | | **Microsoft Edge** | `edge://extensions` | 开启「开发人员模式」→「加载解压缩的扩展」→ 选择本仓库根目录 | | **Firefox** | `about:debugging#/runtime/this-firefox` | 「临时载入附加组件」→ 选择本仓库中的 `manifest.json` | 3. 在需要保存的网页上点击扩展图标,在弹出面板中选择对应操作。 > Firefox 临时载入在浏览器重启后会失效,需重新加载;正式发布需提交 [addons.mozilla.org](https://addons.mozilla.org/developers/)。 ## 打包发布 推荐一键打包(会先刷新图标;**用 Node 生成正斜杠路径的 zip,Firefox 才能正确加载图标与脚本**): ```powershell npm run pack ``` 生成的 `web-page-saver-v*.zip` 可直接上传 Chrome Web Store、Edge Add-ons 与 [Firefox AMO](https://addons.mozilla.org/developers/)。不要用资源管理器「发送到压缩文件夹」或旧版 `Compress-Archive` 打包——Windows 反斜杠路径会导致 Firefox 无法显示图标、功能异常。 不要包含 `.vscode`、`node_modules`、`package-lock.json`、`.git`、`scripts` 等开发文件。详细清单见 [STORE_LISTING.md](STORE_LISTING.md)。 上架注意: - Edge:勿保留 Chrome Web Store 的 `key` / `update_url` - Firefox:`browser_specific_settings.gecko.id` 现为 `page-saver@807967087.qq.com`(发布后勿随意更改) - AMO 需填写可公开访问的隐私政策 URL(可将本仓库 `PRIVACY.md` 的 Gitee 页面链接填入) ## 目录结构 ``` ├── manifest.json ├── background-sw.js / background.js ├── popup.html / popup.js / popup.css ├── content/ ├── vendor/ # polyfill + html2canvas + jspdf ├── icons/ # 48 / 96 / 128 PNG ├── scripts/ # 图标生成与打包脚本 ├── LICENSE / PRIVACY.md / README.md / STORE_LISTING.md ``` ## 许可证 [ISC](LICENSE) © 2026 807967087@qq.com --- **仓库简介建议:** > Chrome / Edge / Firefox MV3 扩展:网页保存为 PNG(视口/整页拼接)或导出 PDF。纯本地处理,无追踪。