XmpPacketWrapper

XmpPacketWrapper class

包含序列化的 XMP 包,包括头部和尾部。 由一对 XML 处理指令 (PI) 组成的包装器可以放置在 rdf:RDF 元素周围。

public class XmpPacketWrapper : MetadataPackage, IXmpType

构造函数

姓名 描述
XmpPacketWrapper() 初始化一个新的实例XmpPacketWrapper类.
XmpPacketWrapper(XmpHeaderPI, XmpTrailerPI, XmpMeta) 初始化一个新的实例XmpPacketWrapper类.

特性

姓名 描述
Count { get; } 获取元数据属性的数量。
HeaderPI { get; set; } 获取或设置表头处理指令。
Item { get; } 获取MetadataProperty具有指定名称.
Keys { get; } 获取元数据属性名称的集合。
Meta { get; set; } 获取或设置 XMP meta.
MetadataType { get; } 获取元数据类型。
PackageCount { get; } 获取 XMP 结构内的包数。
Packages { get; } 获取数组XmpPackage在 XMP. 里面
PropertyDescriptors { get; } 获取描述符集合,其中包含有关可通过 GroupDocs.Metadata 搜索引擎访问的属性的信息。
Schemes { get; } 提供对已知 XMP 模式的访问。
TrailerPI { get; set; } 获取或设置尾部处理指令。

方法

姓名 描述
AddPackage(XmpPackage) 添加包。
AddProperties(Func<MetadataProperty, bool>, PropertyValue) 添加满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。
ClearPackages() 删除所有XmpPackage在 XMP. 里面
Contains(string) 确定包是否包含具有指定名称的元数据属性。
ContainsPackage(string) 确定包是否存在于 XMP 包装器中。
virtual FindProperties(Func<MetadataProperty, bool>) 查找满足指定谓词的元数据属性。 搜索是递归的,因此它也会影响所有嵌套包。
GetEnumerator() 返回一个遍历集合的枚举器。
GetPackage(string) 通过命名空间 uri 获取包。
GetXmpRepresentation() 以 XMP 格式返回包含字符串的值。
RemovePackage(XmpPackage) 删除指定的包。
virtual RemoveProperties(Func<MetadataProperty, bool>) 删除满足指定谓词的元数据属性。
virtual Sanitize() 从包中删除可写元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。
SetProperties(Func<MetadataProperty, bool>, PropertyValue) 设置满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 此方法是以下方法的组合AddPropertiesUpdateProperties 如果现有属性满足谓词,则更新其值。 如果包中缺少满足谓词的已知属性,则将其添加到包中。
UpdateProperties(Func<MetadataProperty, bool>, PropertyValue) 更新满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。

评论

了解更多

例子

此示例说明如何更新 XMP 元数据属性。

using (Metadata metadata = new Metadata(Constants.GifWithXmp))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        // 如果 XMP 包中没有这样的方案,我们应该创建它
        if (root.XmpPackage.Schemes.DublinCore == null)
        {
            root.XmpPackage.Schemes.DublinCore = new XmpDublinCorePackage();
        }
        root.XmpPackage.Schemes.DublinCore.Format = "image/gif";
        root.XmpPackage.Schemes.DublinCore.SetRights("Copyright (C) 2011-2022 GroupDocs. All Rights Reserved");
        root.XmpPackage.Schemes.DublinCore.SetSubject("test");

        if (root.XmpPackage.Schemes.CameraRaw == null)
        {
            root.XmpPackage.Schemes.CameraRaw = new XmpCameraRawPackage();
        }
        root.XmpPackage.Schemes.CameraRaw.Shadows = 50;
        root.XmpPackage.Schemes.CameraRaw.AutoBrightness = true;
        root.XmpPackage.Schemes.CameraRaw.AutoExposure = true;
        root.XmpPackage.Schemes.CameraRaw.CameraProfile = "test";
        root.XmpPackage.Schemes.CameraRaw.Exposure = 0.0001;

        // 如果你不想保留旧值,只需替换整个方案
        root.XmpPackage.Schemes.XmpBasic = new XmpBasicPackage();
        root.XmpPackage.Schemes.XmpBasic.CreateDate = DateTime.Today;
        root.XmpPackage.Schemes.XmpBasic.BaseUrl = "https://groupdocs.com";
        root.XmpPackage.Schemes.XmpBasic.Rating = 5;

        root.XmpPackage.Schemes.BasicJobTicket = new XmpBasicJobTicketPackage();

        // 设置复杂类型属性
        root.XmpPackage.Schemes.BasicJobTicket.Jobs = new[]
        {
            new XmpJob
            {
                ID = "1",
                Name = "test job",
                Url = "https://groupdocs.com"
            },
        };

        // ... 

        metadata.Save(Constants.OutputGif);
    }
}

也可以看看