# PageSnap **Repository Path**: youngmong/page-snap ## Basic Information - **Project Name**: PageSnap - **Description**: PageSnap 是一个 Chrome Manifest V3 浏览器插件,可以快速把当前网页导出为 Markdown 或 PDF 格式的文件 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PageSnap PageSnap 是一个 Chrome Manifest V3 浏览器插件,可以把当前网页导出为 **PDF** 或 **Markdown**,默认按完整页面内容处理,尽量减少数据缺失。 ## 功能 - Markdown 导出:保留标题、段落、列表、链接、图片、代码块、表格、表单控件、折叠内容、引用和页面元数据;相对地址会转换为绝对地址。 - PDF 导出:调用浏览器原生打印引擎,并临时注入完整打印样式,展开常见的滚动容器和高度限制,打印的是完整页面而不是当前视口。 - 去除广告:导出时可按需跳过或隐藏广告容器、广告网络 iframe、站内导航、侧栏推荐和弹窗推广。 - 弹窗选择格式:打开扩展后选择 `Markdown` 或 `PDF`,点击“导出当前页面”即可。 ## 安装 1. 打开 `chrome://extensions`。 2. 开启右上角“开发者模式”。 3. 点击“加载已解压的扩展程序”。 4. 选择本项目的根目录: ```text /Users/xxxxxxx/workspace/PageSnap ``` ## 使用 1. 打开需要导出的网页。 2. 点击浏览器工具栏中的插件图标。 3. 选择 `Markdown` 或 `PDF`,并按需勾选“去除广告”。 4. 点击“导出当前页面”。 Markdown 会直接下载到浏览器的下载目录。PDF 会打开系统打印窗口,在打印窗口中选择“另存为 PDF”即可保存完整页面。 ## 数据完整性 - Markdown 提取器遍历 `body` 中的所有语义内容,包含可见内容和隐藏的语义内容,但会排除 `script`、`style`、`noscript`、`template`、`link`、`meta`、`head` 等非正文数据。 - 图片、链接、iframe、视频和音频的相对地址会基于当前页面地址转换为绝对地址。 - 简单表格转换为 Markdown 表格;包含 `colspan`、`rowspan` 或复杂分组的表格会保留为 HTML 表格结构,避免行列信息丢失。 - 如果某个元素不想被导出,可以给元素添加 `data-page-export-ignore` 属性。 - 勾选“去除广告”后,Markdown 会跳过广告、站内导航、侧栏推荐和弹窗推广等元素,PDF 会在打印时隐藏这些元素。 - PDF 使用浏览器原生排版能力,能保留页面字体、图片、样式和完整多页内容。 ## 项目结构 ```text . ├── manifest.json ├── popup/ # 扩展弹窗 UI 与交互 ├── content/ │ ├── ad-filter.js # 广告元素识别与打印隐藏规则 │ ├── markdown.js # DOM 到 Markdown 的完整提取器 │ └── content.js # PDF 打印准备与消息处理 └── icons/ # 扩展图标 ``` ## 开发验证 扩展不需要构建步骤。修改代码后,在 `chrome://extensions` 中点击扩展的“重新加载”即可验证。 ## 权限说明 - `activeTab`:仅在用户点击插件时读取当前标签页。 - `scripting`:向当前标签页注入导出脚本。 - `downloads`:保存 Markdown 文件。