我们很高兴宣布 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 文件。

资源