# ukui-file-metadata **Repository Path**: openkylin/ukui-file-metadata ## Basic Information - **Project Name**: ukui-file-metadata - **Description**: No description available - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: upstream - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 8 - **Created**: 2022-12-29 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UkuiFileMetadata ## 简介 UkuiFileMetaData 提供文件元数据解析、用户自定义数据写入,以及可供外部项目直接使用的通用基础能力。其中元数据读取部分的结构和部分代码参考自 KFileMetaData;ZIP 读取、解压和校验是该共享库新增的公共能力,随 `ukui-file-metadata` 共同构建、链接和发布。 ## 功能说明 ### 文件元数据解析 用于提取文件元数据信息,包含: ```c++ enum Flag { ExtractNothing = 0, ExtractMetaData = 1, //基本元数据 ExtractPlainText = 2, //文本 ExtractImageData = 4, //图片数据 ExtractThumbnail = 8 //缩略图 }; ``` 使用时需要继承ExtractionResult实现一个用于传递参数和存储解析结果的子类。 使用举例: ```c++ //解析文件文本内容 QString mimeType = UkuiFileMetadata::MimeUtils::strictMimeType(path, {}).name(); QList extractors = m_extractorManager.fetchExtractors(mimeType); ExtractionResult result(path, mimeType, UkuiFileMetadata::ExtractionResult::Flag::ExtractPlainText); for(auto extractor : extractors) { extractor->extract(&result); if(!result.text().isEmpty()) { qDebug() << result.text(); break; } } //获取缩略图 QString mimeType = UkuiFileMetadata::MimeUtils::strictMimeType(path, {}).name(); QList extractors = m_extractorManager.fetchExtractors(mimeType); ExtractionResult result(path, mimeType, UkuiFileMetadata::ExtractionResult::Flag::ExtractThumbnail); result.setThumbnailRequest(UkuiFileMetadata::ThumbnailRequest(QSize(512, 512), 1)); for(auto extractor : extractors) { extractor->extract(&result); if(result.thumbnail().isValid()) { qDebug() << result.thumbnail().image(); break; } //使用ocr QString textContent = UkuiFileMetadata::OcrUtils::getTextInPicture(path); qDebug() << textContent; } ``` ### 文件元数据写入 TODO ### ZIP 读取、解压与校验 项目提供基于 libzip 的只读 `ZipReader` 和一站式 `ZipArchive`,支持枚举、 限量读取、校验和安全解压。ZIP 创建和写入接口(Writer)为后续版本预留, 首版暂不实现或发布。用法和安全边界见 [ZIP API 使用指南](docs/zip-api-usage.md)。 ### 元数据解析插件 继承ExtractorPlugin类实现针对某种类型的文件元数据解析功能可实现功能扩展 ##使用说明 ```cmake find_package(ukui-file-metadata) target_link_libraries(your-target PUBLIC ukui-file-metadata) ```