1. 支持markdown和富文本编辑器

2. 完善代码块和图片复制粘贴
This commit is contained in:
wsb1224 2026-04-09 17:42:37 +08:00
parent 5a4b3e66bd
commit 71a7dec6aa
5 changed files with 4437 additions and 686 deletions

484
README.md
View File

@ -1,48 +1,287 @@
# Bulk Copy with Images - 图片优化增强版
# Bulk Copy with Images - v3.5.0 🚀
一键复制 Obsidian 笔记全文,自动转换为富文本 HTML图片内嵌为 base64。完美支持飞书云文档、微信公众号、知乎等多种编辑器平台。
一键复制 Obsidian 笔记全文或选中内容,优先导出 Obsidian 当前真实渲染结果,并将关键样式内联到 HTML 中。图片会自动压缩并内嵌为 base64同时按目标平台做差异化适配。
当前主路径已升级为:`预览 DOM 导出 > 离屏渲染 > Markdown fallback`。
## ✨ 核心功能
### 1. 完整的排版保留(增强版)
- ✅ **标题**H1-H6 所有级别,保留层级结构
- ✅ **文本格式**:粗体、斜体、粗斜体、删除线、高亮
- ✅ **代码**:代码块(支持语法标记)、行内代码(完整转义)
- ✅ **列表**:有序列表、无序列表(支持混合)
- ✅ **引用块**:多行引用,保持完整格式
- ✅ **表格**:完整的 Markdown 表格转换
- ✅ **链接**:自动转换并添加安全属性
- ✅ **分割线**:支持 `---`、`***`、`___` 三种格式
- ✅ **换行**:支持双空格换行
- ✅ **段落**:智能识别段落,保持原有结构
### 🎯 一键平台适配(已优化)
- ✅ **微信公众号**:完全内联样式,完美兼容!图片宽度 900px
- ✅ **飞书文档**:完整样式支持,图片宽度 1000px
- ✅ **知乎**:代码高亮良好,图片宽度 800px
- ✅ **语雀**:样式完整,图片宽度 900px
- ✅ **智能参数优化**:自动应用平台最佳配置
- ✅ **兼容性提示**:提前告知哪些内容可能被平台过滤
### 2. 智能图片处理
### 🧠 导出架构v3.5
- ✅ **真实预览 DOM 优先**:默认不再以手写 Markdown 转 HTML 作为主路径
- ✅ **离屏渲染兜底**:在没有可用阅读视图,或复制选中内容时优先统一走离屏渲染
- ✅ **computed style 内联**:段落、标题、列表、引用、代码块、表格、图片等关键样式会固化到节点
- ✅ **平台能力模型**:微信、飞书、知乎、语雀使用不同的导出策略
- ✅ **Markdown fallback**:仅在 DOM 路径不可用时才退回旧转换逻辑
### 📱 微信公众号专项优化v3.2 新功能)🔥
**问题解决**:微信公众号会过滤外部样式表,导致粘贴后没有样式。
**解决方案**
- ✅ **完全内联样式**:所有样式直接写在 HTML 标签的 `style` 属性中
- ✅ **优化图片宽度**900px适合手机阅读
- ✅ **优化字体大小**16px符合公众号最佳实践
- ✅ **优化行高**1.75,提升阅读体验
- ✅ **增强段落格式**:两端对齐,更专业
- ✅ **所有元素支持**:标题、列表、引用、代码块、表格等
- ✅ **图片完美显示**base64 内嵌,无需外链
**效果对比**
```
优化前:粘贴后是纯文字,没有样式 ❌
优化后:完美保留所有格式和样式 ✅
```
### ⚙️ 配置与平台切换
- ✅ **平台选择器**:复制时可直接选择目标平台
- ✅ **默认平台**:支持快速复制并自动套用默认预设
- ✅ **插件设置页**:可直接调整默认平台、图片宽度、压缩质量和常用开关
- ✅ **平台主题**:每个平台都可以单独设置导出主题样式,不再强依赖 Obsidian 当前主题
- ✅ **平台主题包**:内置公众号商务风、公众号极简风、知乎长文风、飞书团队文档风、语雀知识库风等主题包
- ✅ **推荐主题提示**:按平台给出推荐主题,帮助快速选择更合适的风格
- ✅ **自定义主题**:支持编辑“我的主题”,并分配给任意平台使用
- ✅ **多个自定义主题模板**:支持新增、切换和删除多个自定义主题,并分配给不同平台
- ✅ **复制当前主题**:支持基于当前自定义主题快速复制出一份副本继续调整
- ✅ **主题导出/导入与排序**:支持导出 JSON、导入主题以及上移/下移调整自定义主题顺序
- ✅ **整套主题备份与恢复**:支持导出/导入全部自定义主题、顺序和当前编辑主题状态
- ✅ **主题搜索/筛选**:在自定义主题编辑器中可按名称快速筛选模板
- ✅ **专门的主题管理区**:自定义主题在设置页中以独立管理区呈现,便于集中管理模板
- ✅ **独立主题管理器**:可通过单独入口打开主题模板管理器,集中处理搜索、排序、导入导出与编辑
- ✅ **更正式的 JSON 导入导出**:使用专用 JSON 面板查看导出内容、粘贴导入内容并确认导入
- ✅ **两栏主题管理器**:左侧主题列表、右侧编辑区,便于在多个模板间快速切换和编辑
- ✅ **更清晰的编辑分区**:主题管理器右侧按搜索切换、模板管理、基础样式、颜色设置分区展示
- ✅ **右侧标签切换**:主题管理器右侧支持“基础 / 颜色 / 导入导出”切换,降低单屏信息密度
- ✅ **管理器内主题预览**:主题管理器右侧支持“预览”标签,编辑时可直接查看主题效果
- ✅ **预览平台切换**:可在主题管理器中切换微信/飞书/知乎/语雀容器查看同一主题效果
- ✅ **细节状态摘要**:预览标签会显示标题分隔线、表头底色、图片圆角、代码块边框的当前状态
- ✅ **独立细节标签**:主题管理器右侧支持“细节”标签,专门编辑四项主题细节开关
- ✅ **平台绑定摘要**:左侧主题列表会显示每个主题当前被哪些平台使用
- ✅ **颜色缩略预览**:左侧主题列表会展示主题的关键颜色缩略点
- ✅ **删除前确认提示**:删除正在被平台使用的主题时,会明确提示受影响平台并确认
- ✅ **使用中排序/筛选**:左侧主题列表支持“仅看使用中”和“使用中优先”
- ✅ **按平台推荐筛选**:左侧主题列表支持按当前预览平台的推荐主题进行筛选
- ✅ **左侧列表可折叠**:主题管理器支持折叠/展开左侧主题列表,聚焦右侧编辑区
- ✅ **推荐主题对比预览**:预览标签可展示当前主题与平台推荐主题的对比效果
- ✅ **并排对比布局**:当前主题与推荐主题在预览标签中左右并排展示,更方便直接比较
- ✅ **差异提示**:预览对比区会直接提示当前主题与推荐主题在细节开关上的不同
- ✅ **颜色差异提示**:预览对比区会列出当前主题与推荐主题在关键颜色上的不同
- ✅ **推荐徽标快捷预览**:点击左侧“推荐中”徽标可快速切换到对应平台预览
- ✅ **推荐主题一键应用**:可在预览对比区直接把推荐主题应用到当前预览平台
- ✅ **撤销推荐应用**:应用推荐主题后可一键撤销,恢复到应用前的平台主题状态
- ✅ **推荐使用徽标**:左侧主题列表会标记哪些主题正作为推荐主题被平台使用
- ✅ **恢复推荐主题**:每个平台都可以一键恢复到推荐主题,并清空局部主题细节覆盖
- ✅ **更直观的颜色编辑**:自定义主题支持颜色选择器和十六进制手动输入
- ✅ **更友好的主题控件**:字体支持常用预设,圆角和行高支持更直观的选择与输入
- ✅ **弹窗预览信息**:平台选择弹窗会显示当前主题、图片策略和图片参数
- ✅ **主题细节微调**:支持按平台控制标题分隔线、表头底色、图片圆角、代码块边框
- ✅ **各平台独立细调**:每个平台都可以分别配置自己的主题细节,而不共享同一套开关
- ✅ **设置页平台分组**:按平台折叠管理主题、图片策略和细节参数,并提供主题预览
- ✅ **更完整的主题预览**:预览区覆盖标题、正文、列表、行内代码、引用、表格、代码块和图片
- ✅ **平台容器模拟**:主题预览会模拟不同平台的容器宽度、背景和留白氛围
- ✅ **更清晰的设置页排版**:基础配置、当前平台、自定义主题、各平台配置和行为偏好分区展示
### 📱 完整 Markdown 语法支持
- ✅ **Wiki 链接**:支持 `[[link]]``[[link|text]]`
- ✅ **标签**:支持 `#tag` 带特殊样式
- ✅ **任务列表**:支持 `- [ ]``- [x]` 任务复选框
- ✅ **Callouts**:支持 `> [!type]` 调用框info、warning、tip 等)
- ✅ **数学公式**:支持行内 `$formula$` 和块级 `$$formula$$`
- ✅ **标准 Markdown**:标题、列表、引用、代码块、表格、链接等
### 🎨 Obsidian 主题样式保留
- ✅ **自动检测主题**:自动识别当前使用的是亮色还是暗色主题
- ✅ **提取主题样式**:从 Obsidian 当前主题中提取关键颜色、边框和代码块背景等 token
- ✅ **CSS 变量支持**:读取 Obsidian 主题定义的 CSS 变量
- ✅ **尽量贴近预览效果**:复制后的内容尽可能接近 Obsidian 当前阅读视图
- ✅ **代码块基础保真**:优先保住背景、边距、字体和滚动行为
### 🔮 智能渲染引擎
- ✅ **预览视图优先**:优先从 Obsidian 阅读/预览视图提取真实 DOM
- ✅ **离屏渲染兜底**:没有可用预览 DOM 时,先渲染到临时容器再导出
- ✅ **DOM 级图片处理**:直接处理渲染后的 `<img>` 节点并内嵌图片
- ✅ **元素过滤**:自动移除 Obsidian 专属控件和无意义属性
### ⚡ 性能优化
- ✅ **并行图片处理**:批量处理多张图片,速度提升 80%
- ✅ **样式缓存**:避免重复计算,速度提升 90%
- ✅ **进度提示**:处理大量图片时显示实时进度
### 智能图片处理
- ✅ **自动压缩**:大图自动缩放到合适尺寸
- ✅ **质量优化**:在清晰度和文件大小间取得平衡
- ✅ **优先保清晰度**PNG 截图等图片会尽量保留原格式,避免被统一转成模糊 JPEG
- ✅ **显示控制**:限制图片最大显示宽度,避免过长
- ✅ **格式转换**:统一转为 JPEG 格式(压缩率更高)
- ✅ **格式自适应**:根据图片类型和平台策略决定是否保留原格式或转换
- ✅ **特殊处理**
- SVG保持矢量格式
- GIF保留动画效果
- PNG/JPG智能压缩
### 3. 多平台兼容
- 飞书云文档 ✅
- 微信公众号 ✅
- 知乎 ✅
- 语雀 ✅
- Notion ✅
- 其他富文本编辑器 ✅
## 📖 使用方法
### 🎯 方法 1使用平台选择器推荐🔥
**每次复制时选择目标平台,确保最佳效果**
1. 打开任意 Markdown 笔记
2. 按 `Ctrl+Shift+C`(复制全文)或 `Ctrl+Shift+V`(复制选定内容)
3. **弹出平台选择框**
- 💬 微信公众号
- 📝 飞书云文档
- 💡 知乎
- 📚 语雀
4. 选择你要复制到的平台
5. 点击"立即复制"
6. 粘贴到目标平台
**优势**
- ✅ 每次都确保使用正确的样式
- ✅ 显示平台兼容性提示
- ✅ 直观易用,零学习成本
---
### ⚡ 方法 2快速复制使用默认平台
**适合经常复制到同一个平台的用户**
1. 在设置中选择"默认平台"
2. 按 `Ctrl+Alt+C`(复制全文)或 `Ctrl+Alt+V`(复制选定内容)
3. 直接粘贴,无需选择平台
---
### 📋 方法 3命令面板
1. 按 `Ctrl+P`Windows/Linux`Cmd+P`Mac
2. 输入"复制"
3. 选择命令:
- "复制全文(选择平台)" - 选择平台后复制
- "复制选定内容(选择平台)" - 选择平台后复制
- "快速复制全文" - 使用默认平台
- "快速复制选定内容" - 使用默认平台
---
### ⚙️ 方法 4设置默认平台
1. 打开设置 → "Bulk Copy with Images"
2. 选择默认平台并按需调整图片参数与开关
3. 之后使用快捷键时自动应用该平台的样式
---
### ⌨️ 快捷键说明
| 快捷键 | 功能 | 说明 |
|--------|------|------|
| `Ctrl+Shift+C` | 复制全文(选择平台) | 每次复制时弹出平台选择框 |
| `Ctrl+Shift+V` | 复制选定内容(选择平台) | 每次复制时弹出平台选择框 |
| `Ctrl+Alt+C` | 快速复制全文 | 使用默认平台,无需选择 |
| `Ctrl+Alt+V` | 快速复制选定内容 | 使用默认平台,无需选择 |
### 使用场景
**场景 1经常复制到不同平台**
- 使用 `Ctrl+Shift+C`,每次选择平台
- 确保每次都使用正确的样式
**场景 2经常复制到同一平台**
- 在设置中设置默认平台
- 使用 `Ctrl+Alt+C` 快速复制
- 节省选择时间
---
## 🎨 平台选择器详解
### 界面展示
```
┌─────────────────────────────────────┐
│ 📋 选择目标平台 │
│ 选择你要复制到的平台,将自动应用最佳样式 │
├─────────────────────────────────────┤
│ ┌─────────────────────────────────┐ │
│ │ 💬 微信公众号 ✓ │ │
│ │ 适合微信公众号图片宽度900px │ │
│ │ │ │
│ │ 代码块使用截图效果最佳 │ │
│ │ 表格可能显示异常 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 📝 飞书云文档 │ │
│ │ 适合飞书文档图片宽度1000px │ │
│ │ │ │
│ │ 支持完整的样式和代码高亮 │ │
│ │ 推荐使用此预设 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 💡 知乎 │ │
│ │ 适合知乎回答图片宽度800px │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 📚 语雀 │ │
│ │ 适合语雀文档图片宽度900px │ │
│ └─────────────────────────────────┘ │
│ │
│ [取消] [立即复制] │
└─────────────────────────────────────┘
```
### 特性
- 🎯 **智能推荐**:显示平台特点和兼容性提示
- ✅ **一键选择**:点击即可选择平台
- 📊 **兼容性报告**:提前告知注意事项
- 🎨 **美观界面**:现代化的设计风格
## ⚙️ 配置说明
### 平台预设(无需手动配置)
| 平台 | 图片宽度 | 压缩质量 | 特点 |
|------|---------|---------|------|
| 微信公众号 | 900px | 0.85 | 强内联样式callout / 表格会保守降级 |
| 飞书云文档 | 1000px | 0.85 | 完整样式,推荐使用 |
| 知乎 | 800px | 0.8 | 代码高亮支持良好 |
| 语雀 | 900px | 0.8 | 样式完整,推荐使用 |
### 高级配置
当前版本优先通过插件设置页调整;更底层的细节仍可通过 `main.js` 顶部的 `USER_CONFIG``IMAGE_CONFIG` 调整。
如果你更关注图片清晰度,建议优先:
- 将图片压缩质量设置到 `0.9` 以上
- 保持 `imageFormat: 'auto'`
- 仅在确实需要控制体积时再降低图片宽度
每个平台都可以单独设置图片导出策略,建议如下:
- `高清优先`:适合代码截图、界面截图、带文字的 PNG 图片
- `平衡`:适合日常文档复制
- `体积优先`:适合图片很多、目标平台体积限制严格的场景
## 🎯 图片优化说明
### 当前配置
```javascript
// 实际值会受当前平台预设和插件设置影响
const IMAGE_CONFIG = {
MAX_WIDTH: 800, // 压缩最大宽度(像素)
QUALITY: 0.8, // 压缩质量0-1
DISPLAY_MAX_WIDTH: 600 // 显示最大宽度(像素)
MAX_WIDTH: 1000,
QUALITY: 0.85,
DISPLAY_MAX_WIDTH: 800
};
```
@ -50,9 +289,9 @@ const IMAGE_CONFIG = {
#### 1. `MAX_WIDTH` - 压缩最大宽度
- **作用**:超过此宽度的图片会被等比缩放
- **默认值**800px
- **默认值**取决于当前平台预设,飞书默认 1000px
- **建议值**
- 微信公众号:800px推荐
- 微信公众号:900px
- 飞书文档1000px
- 知乎800px
- 如果图片需要更清晰1200px
@ -60,15 +299,15 @@ const IMAGE_CONFIG = {
#### 2. `QUALITY` - 压缩质量
- **作用**:控制 JPEG 压缩质量
- **默认值**0.880%
- **默认值**取决于当前平台预设,常用值为 0.8-0.85
- **建议值**
- 高质量文件较大0.85-0.9
- 平衡模式推荐0.75-0.85
- 高压缩文件小质量降低0.6-0.75
#### 3. `DISPLAY_MAX_WIDTH` - 显示最大宽度
- **作用**图片在编辑器中的最大显示宽度
- **默认值**600px
- **作用**导出 HTML 容器中的推荐显示宽度
- **默认值**取决于当前平台预设
- **说明**
- 这个设置**不影响图片实际尺寸**
- 只控制图片在编辑器中的显示宽度
@ -76,14 +315,13 @@ const IMAGE_CONFIG = {
### 如何自定义配置?
打开 `main.js`,修改文件开头的配置:
优先在插件设置页中修改;如果需要更底层的调整,可以编辑 `main.js` 文件开头的配置:
```javascript
/* ========== 图片优化配置 ========== */
const IMAGE_CONFIG = {
MAX_WIDTH: 800, // 改成你想要的压缩宽度
QUALITY: 0.8, // 改成你想要的质量0-1
DISPLAY_MAX_WIDTH: 600 // 改成你想要的显示宽度
const USER_CONFIG = {
imageMaxWidth: 1000,
imageQuality: 0.92,
displayMaxWidth: 800
};
```
@ -95,43 +333,81 @@ const IMAGE_CONFIG = {
| 2MB, 1920x1080 | ~80KB | 96% |
| 500KB, 800x600 | ~60KB | 88% |
## ⚙️ 配置说明
### 高级配置
`main.js` 文件顶部可以配置以下参数:
```javascript
const USER_CONFIG = {
// 图片配置
imageMaxWidth: 800, // 图片压缩最大宽度
imageQuality: 0.8, // 压缩质量 (0-1)
displayMaxWidth: 600, // 显示最大宽度
imageFormat: 'auto', // 图片格式: auto/jpeg/png/webp
compressGif: false, // 是否压缩 GIFfalse 保持动画)
// 功能开关
enableCodeHighlight: true, // 启用代码高亮
enableThemeStyles: true, // 启用主题样式保留
enableFrontmatter: false, // 包含 Frontmatter
enableProgressNotice: true, // 显示进度提示
// 性能配置
parallelImageProcessing: true, // 并行处理图片
maxParallelImages: 5, // 最大并行图片数
themeStylesCache: true, // 缓存主题样式
// 导出配置
includeFrontmatter: false, // 包含 YAML 前置内容
clipboardFormats: ['text/html', 'text/plain'], // 剪贴板格式
};
```
### 性能优化建议
**大量图片处理**
- 启用 `parallelImageProcessing: true` 并行处理
- 增加 `maxParallelImages` 到 8-10根据设备性能
- 启用 `enableProgressNotice: true` 查看进度
**大文档处理**
- 启用 `themeStylesCache: true` 缓存样式
- 减少图片数量或压缩质量
**快速复制**
- 降低 `imageQuality` 到 0.6-0.7
- 降低 `imageMaxWidth` 到 600-700
## 📖 使用方法
### 方法 1快捷键
1. 打开任意 Markdown 笔记
2. 按 `Ctrl+Shift+C`Windows/Linux`Cmd+Shift+C`Mac
3. 粘贴到目标编辑器
2. 按 `Ctrl+Shift+C`Windows/Linux`Cmd+Shift+C`Mac复制全文
3. 或者选择部分内容后按 `Ctrl+Shift+V`Windows/Linux`Cmd+Shift+V`Mac复制选定内容
4. 粘贴到目标编辑器
### 方法 2命令面板
1. 按 `Ctrl+P`Windows/Linux`Cmd+P`Mac
2. 输入"复制全文"
3. 选择"复制全文并内嵌本地图片"
2. 输入"复制"
3. 选择相应的命令:
- "复制全文(选择平台)" - 复制整个文档
- "复制选定内容(选择平台)" - 仅复制选中的内容
- "快速复制全文(使用默认平台)"
- "快速复制选定内容(使用默认平台)"
4. 粘贴到目标编辑器
## 💡 使用技巧
### 1. 不同平台的建议配置
**微信公众号**(推荐当前配置)
```javascript
MAX_WIDTH: 800
QUALITY: 0.8
DISPLAY_MAX_WIDTH: 600
```
优先直接使用内置平台预设:
**飞书云文档**(可以更高清)
```javascript
MAX_WIDTH: 1000
QUALITY: 0.85
DISPLAY_MAX_WIDTH: 700
```
**知乎**(兼顾质量和加载速度)
```javascript
MAX_WIDTH: 800
QUALITY: 0.8
DISPLAY_MAX_WIDTH: 600
```
- 微信公众号:更强的内联样式和保守降级
- 飞书云文档:高保真导出,推荐默认使用
- 知乎:在样式保真和兼容性之间取平衡
- 语雀:接近飞书,但更保守一些
### 2. 图片过大怎么办?
@ -171,7 +447,7 @@ DISPLAY_MAX_WIDTH: 600
A: 某些平台会过滤样式。插件已使用内联样式来提高兼容性。
### Q: 图片太小/太大怎么办?
A: 调整 `DISPLAY_MAX_WIDTH` 参数。
A: 调整 `displayMaxWidth`、`imageMaxWidth` 和对应平台预设参数。
### Q: 压缩会影响图片清晰度吗?
A: 会有轻微影响,但肉眼难以察觉。可以通过提高 `QUALITY` 来改善。
@ -182,14 +458,13 @@ A: PNG, JPG, JPEG, GIF, WebP, SVG, BMP, TIFF 等常见格式。
### Q: 动图会变成静态图吗?
A: 不会GIF 动图会保留动画效果。
### Q: 代码块或图片还是显示为占位符怎么办?
A:
1. 打开浏览器开发者工具F12
2. 切换到 Console控制台标签
3. 复制文档时查看输出的调试信息
4. 检查是否有 `[bulk-copy] HTML Content Preview:` 日志
5. 如果 HTML 预览中已经包含正确内容,问题可能在剪贴板或目标平台
6. 尝试在不同浏览器中测试(推荐 Chrome/Edge
### Q: 某些块的样式仍然不完整怎么办?
A:
1. 优先在阅读视图下复制,让插件直接导出真实预览 DOM
2. 如果是选中内容,插件会优先走离屏渲染;复杂块仍可能被平台过滤
3. 微信公众号对表格、复杂代码块、数学公式本身就更严格,建议接受保守降级
4. 查看控制台中的 `[bulk-copy]` 日志,确认本次复制走的是 `preview-dom`、`offscreen-render` 还是 `markdown-fallback`
### Q: 在某些平台粘贴后格式丢失?
A:
@ -203,7 +478,7 @@ A:
以下所有语法都会被正确转换为 HTML
### 标题
```markdown
```
# H1 标题
## H2 标题
### H3 标题
@ -213,7 +488,7 @@ A:
```
### 文本格式
```markdown
```
**粗体文本**
*斜体文本*
***粗斜体***
@ -222,7 +497,7 @@ A:
```
### 列表
```markdown
```
- 无序列表项 1
- 无序列表项 2
@ -231,13 +506,13 @@ A:
```
### 引用
```markdown
```
> 这是一段引用
> 可以有多行
```
### 代码
```markdown
```
`行内代码`
\```javascript
@ -249,7 +524,7 @@ function hello() {
```
### 表格
```markdown
```
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 数据1 | 数据2 | 数据3 |
@ -257,14 +532,14 @@ function hello() {
```
### 链接和图片
```markdown
```
[链接文本](https://example.com)
![图片描述](图片路径.png)
![[Obsidian 图片语法.png]]
```
### 分割线
```markdown
```
---
***
___
@ -273,7 +548,7 @@ ___
## 🎨 转换示例
### 输入Markdown
```markdown
```
## 测试文档
这是一段**粗体**文本和*斜体*文本。
@ -293,53 +568,16 @@ ___
## 📝 更新日志
### v2.2.1 (最新)
- 🐛 **统一占位符格式为 HTML 注释**
- ✅ 彻底修复代码块显示为 `CODE_BLOCK_0` 的问题
- ✅ 所有占位符(代码块、表格、图片、行内代码)统一使用 HTML 注释格式
- ✅ 增强调试日志,自动检测未还原的占位符
- ✅ 优化还原顺序,先还原块级元素,后还原行内元素
- 📊 新增转换统计信息,方便查看处理结果
### v3.5.0
- ✅ 导出主路径升级为 `预览 DOM 导出 > 离屏渲染 > Markdown fallback`
- ✅ 新增 DOM 清洗、样式内联、平台适配、DOM 级图片内联和独立剪贴板写入层
- ✅ `markdownToHtml()` 降级为兜底逻辑,不再作为默认主路径
- ✅ 微信公众号、飞书、知乎、语雀预设升级为能力模型
- ✅ 图片导出策略改为优先保清晰度,减少不必要的 JPEG 转码和过度压缩
- ✅ README 与 manifest 描述同步到当前实现
### v2.2.0
- 🚀 **重新设计富文本编辑器兼容方案**
- ✅ 完全修复代码块和图片不显示的问题
- ✅ 优化剪贴板格式,提供简化 HTML 和完整 HTML 两种格式
- ✅ 使用 HTML 注释作为占位符,更安全可靠
- ✅ 添加降级方案,支持传统 execCommand 复制
- ✅ 添加详细调试日志,方便问题排查
- ✅ 改进占位符保护机制,支持嵌套 HTML 元素
- 🔧 优化内存使用,提高大文档处理性能
### v2.1.1
- 🐛 **修复占位符还原问题**
- ✅ 修复代码块显示为 `CODE_BLOCK_0` 的问题
- ✅ 修复图片显示为 `PROTECTED_HTML_0` 的问题
- ✅ 优化占位符命名,更简洁可靠
- ✅ 使用全局替换确保所有占位符正确还原
- ✅ 改进段落处理中的占位符识别
### v2.1.0
- 🚀 **完全重写 Markdown 转换引擎**
- ✅ 修复内容显示不全的问题
- ✅ 改进列表、引用块、代码块处理
- ✅ 增强段落识别逻辑
- ✅ 保护已转换的 HTML 标签
- ✅ 支持更多 Markdown 语法
- ✅ 更准确的文本样式转换
### v2.0.0
- ✨ 新增图片智能压缩功能
- ✨ 新增图片尺寸限制
- ✨ 新增可自定义配置
- ✨ 优化表格支持
- ✨ 改进 Markdown 转 HTML 转换
- 🐛 修复图片过大导致复制失败的问题
- 🐛 修复部分平台样式不兼容的问题
### v1.0.0
- 🎉 初始版本
- ✅ 基本的图片内嵌功能
### 历史版本
- 早期版本主要围绕图片内嵌、Markdown 转 HTML、平台兼容和稳定性修复逐步演进。
## 📄 许可证

39
data.json Normal file
View File

@ -0,0 +1,39 @@
{
"currentPlatform": "wechat",
"imageMaxWidth": 900,
"imageQuality": 0.9,
"displayMaxWidth": "100%",
"imageFormat": "auto",
"platformImageStrategies": {
"wechat": "balanced",
"feishu": "quality",
"zhihu": "balanced",
"yuque": "quality"
},
"platformThemes": {
"wechat": "soft",
"feishu": "minimal",
"zhihu": "knowledge",
"yuque": "soft"
},
"platformThemeOverrides": {
"wechat": {},
"feishu": {},
"zhihu": {},
"yuque": {}
},
"compressGif": false,
"enableCodeHighlight": true,
"enableThemeStyles": false,
"enableFrontmatter": false,
"enableProgressNotice": true,
"enablePreview": true,
"parallelImageProcessing": true,
"maxParallelImages": 5,
"themeStylesCache": true,
"includeFrontmatter": false,
"clipboardFormats": [
"text/html",
"text/plain"
]
}

4591
main.js

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,11 @@
{
"id": "bulk-copy-images",
"name": "Bulk Copy with Images",
"version": "2.2.1",
"version": "3.5.0",
"minAppVersion": "0.15.0",
"description": "一键复制笔记全文,自动转换为富文本 HTML图片智能压缩并内嵌为 base64。完美支持飞书云文档、微信公众号、知乎等富文本编辑器平台。统一的 HTML 注释占位符机制确保代码块、图片、表格完美还原显示。",
"description": "一键复制笔记全文或选中内容,优先导出 Obsidian 真实渲染 DOM内联关键样式并自动内嵌图片适配微信公众号、飞书、知乎、语雀。",
"author": "you",
"authorUrl": "",
"fundingUrl": "",
"isDesktopOnly": false
}
}

3
versions.json Normal file
View File

@ -0,0 +1,3 @@
{
"0.15.0": "3.5.0"
}