我们很高兴宣布 GroupDocs.Metadata for Python v26.9 已于 2026年9月 发布。此版本将底层引擎从 26.6 升级至 26.8,新增命令行界面,支持五种新的归档格式(Apple Archive、GZIP、BZ2、XZ 和 Zstandard),在所有平台恢复对 PowerPoint 演示文稿的支持,并修复了影响 Python 3.5–3.7 以及旧版 Linux/macOS 系统的关键兼容性问题。请注意,此发布包含一次破坏性更改:105 个格式类已从子命名空间移动到其父模块。
本次发布的新内容
- [Feature] 在包内提供命令行界面 (METADATAPYTHON-39)
- [Feature] 添加对读取 Apple Archive (AAR)、GZIP、BZ2、XZ 和 Zstandard 归档的支持 (METADATAPYTHON-62)
- [Enhancement] 将 GroupDocs.Metadata 引擎从 26.6 更新至 26.8 (METADATAPYTHON-63)
- [Enhancement] 将嵌入的 .NET 运行时从 10.0.0 更新至 10.0.12 (METADATAPYTHON-64)
- [Enhancement] 将 Ogg、FB2、Mobi、MSG、DNG、SVG、raw tag、CR2 和 3D 格式类移动到其父模块,遵循 26.8 引擎的布局 (METADATAPYTHON-65)
- [Enhancement] 移除 Linux 和 macOS 上对
libgdiplus/mono-libgdiplus的依赖 (METADATAPYTHON-66) - [Enhancement] 在 Python API 中添加
FileTypeFeatureSupport以及ProductFeature、SupportLevel、FormatFamily枚举 (METADATAPYTHON-67) - [Enhancement] 为索引包和集合添加
get(),为IptcRecordSet添加append(),并提供无参Rectangle()构造函数 (METADATAPYTHON-68) - [Enhancement] 为每个模块(包括
formats.*和standards.*)发布 API 参考文档 (METADATAPYTHON-69) - [Fix] 无法打开 PowerPoint 演示文稿:
DllNotFoundException对aspose.slides.drawing.capi(METADATAPYTHON-50) - [Fix] 在 Python 3.5 – 3.10 上通过
TiffTagID读取 EXIF 标签失败 (METADATAPYTHON-51) - [Fix] 在 Python 3.5 – 3.7 上无法使用该包 (METADATAPYTHON-70)
- [Fix] pip 在无法运行的 Linux 和 macOS 版本上仍会安装该包 (METADATAPYTHON-71)
公共 API 更改
新类和成员
groupdocs.metadata.formats.archive:AarRootPackage、AarPackage、AarFile、GzipRootPackage、GzipPackage、Bz2RootPackage、Bz2Package、XzRootPackage、XzPackage、ZstdRootPackage、ZstdPackage。FileType.AAR、FileType.GZIP、FileType.BZ2、FileType.XZ、FileType.ZSTD,以及FileFormat、MetadataType中的相同五个成员,另有FileType.AVIF。groupdocs.metadata.common:FileTypeFeatureSupport、FeatureSupport,以及ProductFeature、SupportLevel、FormatFamily枚举。- 在索引包和集合上使用
get()—— 如MetadataPackage、ExifDictionaryBasePackage、IptcRecordSet、IptcRecord、XmpLangAlt等 —— 作为package[key]的替代方案。这些类原先暴露的item属性已被移除且不可调用。 IptcRecordSet.append(),以及无参Rectangle()构造函数。
移动到父模块
| 旧模块 (26.7) | 新模块 (26.9) | 类 |
|---|---|---|
groupdocs.metadata.formats.audio.ogg |
groupdocs.metadata.formats.audio |
OggPackage、OggRootPackage、OggUserComment |
groupdocs.metadata.formats.ebook.fb2 |
groupdocs.metadata.formats.ebook |
Fb2Author、Fb2DocumentInfo、Fb2Genre、Fb2PublishInfo、Fb2Sequence、Fb2TitleInfo |
groupdocs.metadata.formats.ebook.mobi |
groupdocs.metadata.formats.ebook |
MobiHeader、MobiPackage、MobiRootPackage、PDBHeader |
groupdocs.metadata.formats.fb2 |
groupdocs.metadata.formats.ebook |
Fb2Package |
groupdocs.metadata.formats.email.msg |
groupdocs.metadata.formats.email |
MsgKnownProperties |
groupdocs.metadata.formats.image.dng |
groupdocs.metadata.formats.image |
DngPackage、DngRootPackage |
groupdocs.metadata.formats.image.svg |
groupdocs.metadata.formats.image |
SvgPackage、SvgRootPackage |
groupdocs.metadata.formats.image |
groupdocs.metadata.formats.raw |
RawDoubleTag、RawFloatTag、RawRationalTag、RawSByteTag、RawSLongTag、RawSRationalTag、RawSShortTag、RawUndefinedTag |
groupdocs.metadata.formats.raw.tag |
groupdocs.metadata.formats.raw |
RawTag、RawArrayTag、RawAsciiTag、RawByteTag、RawLongTag、RawShortTag |
groupdocs.metadata.formats.raw.cr2 |
groupdocs.metadata.formats.raw |
其 58 个类中的 56 个(Cr2MakerNotePackage、Cr2CameraSettingsPackage、Cr2…Index 枚举等) |
groupdocs.metadata.formats.three_d.dae / .fbx / .gltf / .stl / .three_ds |
groupdocs.metadata.formats.three_d |
DaeNode、DaePackage、DaeRootPackage、Fbx…、Gltf…、Stl…、ThreeDS… 类 |
这 13 个旧模块已被移除。API 返回的对象不受影响:例如 root.ogg_package 等仍返回相同的类,只是现在从新模块导入。
新功能
命令行:groupdocs-metadata
安装包后会在 PATH 中放置 groupdocs-metadata 命令(同样可通过 python -m groupdocs.metadata 调用),可用于 shell、Make 规则和 CI 步骤:
groupdocs-metadata info photo.jpg # 格式、MIME 类型、大小、页数、加密信息
groupdocs-metadata show report.docx --tag person # 作者、编辑者…以及它们的标签
groupdocs-metadata clean report.docx # 生成 report.clean.docx
groupdocs-metadata remove photo.jpg --tag person.creator -o photo-anon.jpg
groupdocs-metadata export report.pdf -o metadata.json # 支持 json、csv、xlsx、xls 或 xml
groupdocs-metadata list-formats
--tag 接受一个类别(person、time、content …)或该类别中的单个标签(如 person.creator),格式与 show 输出相同。文件通过流读取,因此只读输入也能工作,clean / remove 除非使用 -o 指定输出文件名,否则不会覆盖原文件。每个命令都支持 --password,并且 --license 会首先应用许可证。
Apple Archive、GZIP、BZ2、XZ 和 Zstandard 归档
26.8 引擎现在可以读取这五种归档格式的元数据。每种格式在 groupdocs.metadata.formats.archive 中都有自己的根包:
from groupdocs.metadata import Metadata
with Metadata("archive.gz") as metadata:
print(metadata.get_document_info().file_type.file_format.name) # GZIP
print(metadata.get_root_package().gzip_package.total_entries)
with Metadata("archive.aar") as metadata:
aar = metadata.get_root_package().aar_package
print(aar.total_entries)
for entry in aar.files:
print(entry.name, entry.length, entry.is_directory)
bz2_package、xz_package 和 zstd_package 的使用方式相同(有关尚未填充的字段,请参见 已知问题)。在 26.7 版本中,GZIP、BZ2 和 AAR 文件会抛出 NotImplementedError,而 XZ 与 Zstandard 文件则被误读为 MP3 音频。
PowerPoint 演示文稿再次可打开
在 26.7 版本中,打开 PowerPoint 文件(.pptx、.ppt、.pot 以及其他演示文稿格式)会在 Windows、Linux 和 macOS 上出现 DllNotFoundException: Unable to load … aspose.slides.drawing.capi…,因为引擎所需的本机库未随 wheel 打包。该库已随每个 26.9 wheel 一起提供,并且在 Windows 上包会自行加载它,因此即使在 Microsoft Store Python(不搜索 PATH 中的本机库)中也能正常打开演示文稿。
代码示例
from groupdocs.metadata import Metadata
# 读取 GZIP 元数据
with Metadata("archive.gz") as metadata:
print("Format:", metadata.get_document_info().file_type.file_format.name)
print("Total entries:", metadata.get_root_package().gzip_package.total_entries)
# 读取 Apple Archive 元数据
with Metadata("archive.aar") as metadata:
aar = metadata.get_root_package().aar_package
print("Total files:", aar.total_entries)
for entry in aar.files:
print(f"- {entry.name} ({entry.length} bytes)")
如何获取更新
PyPI
通过 PyPI 安装或升级:
pip install groupdocs-metadata-net==26.9.0
包页面:groupdocs-metadata-net 26.9.0 on PyPI
直接下载
从 GroupDocs.Metadata for Python 26.9 发布页面 下载适用于所有平台的 wheel 文件。