# ZxmFilter **Repository Path**: duyanning/zxm-filter ## Basic Information - **Project Name**: ZxmFilter - **Description**: 知犀思维导图zxm文件的文本提取过滤器 - **Primary Language**: C/C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-20 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 知犀思维导图 IFilter(ZxmFilter) 让 Windows 搜索能索引 `.zxm` 文件(知犀思维导图)的文本内容。 ## 功能 - 实现 Windows [IFilter](https://learn.microsoft.com/en-us/windows/win32/api/filter/nn-filter-ifilter) 接口 - 支持 Windows 7+ 的 `IInitializeWithStream` 初始化方式 - 向后兼容 `IPersistFile` 初始化方式 - 从 ZIP 压缩包中提取 `content.json` - 解析 Quill Delta 格式的 `richText.ops[].insert` 字段 - 支持知犀思维导图的**新旧两种文件格式** ## 技术信息 | 项目 | 值 | |---|---| | 项目类型 | ATL COM DLL (x64 Release) | | CLSID | `{8E5AB8B3-9EF8-4621-9520-58EDD718C911}` | | ProgID | `ZxmFilter.ZxmTextFilter.1` | | 线程模型 | Both | | 依赖 | miniz(ZIP 解压缩)、nlohmann/json(JSON 解析) | ## 编译 使用 Visual Studio 2022,打开 `ZxmFilter/ZxmFilter.sln`,选择 **Release / x64** 编译。 ## 安装 以管理员身份运行: ```cmd regsvr32 ZxmFilter.dll ``` 卸载: ```cmd regsvr32 /u ZxmFilter.dll ``` ## 支持的文件格式 本 IFilter 支持知犀思维导图导出的 `.zxm` 文件,兼容以下两种内部格式: | 特征 | 新格式 | 旧格式 | |---|---|---| | `ver` 字段 | `ver: 2` | 无 | | 顶层结构 | `contents[]` → `root` | 直接 `root` | | `children` 类型 | `dict` | `list` | 节点内部的文本结构(`data` → `richText` → `ops` → `insert`)两种格式一致。 ## 核心文件 | 文件 | 说明 | |---|---| | `ZxmFilter/ZxmTextFilter.cpp` / `.h` | IFilter 核心实现 | | `ZxmFilter/ZxmTextFilter.rgs` | ATL 注册脚本(含 PersistentHandler 配置) | | `ZxmFilter/dllmain.cpp` | ATL 模块入口 | | `ZxmFilter/pch.h` | 预编译头 | | `ZxmFilter/miniz*.h` / `.c` | miniz ZIP 库 | | `ZxmFilter/json.hpp` | nlohmann/json 库 | ## 许可证 本项目代码部分按原有许可证发布。`miniz` 和 `nlohmann/json` 为第三方库,遵循各自许可证。