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) | 设置满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 此方法是以下方法的组合AddProperties 和UpdateProperties 如果现有属性满足谓词,则更新其值。 如果包中缺少满足谓词的已知属性,则将其添加到包中。 |
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);
}
}
也可以看看
- class MetadataPackage
- interface IXmpType
- 命名空间 GroupDocs.Metadata.Standards.Xmp
- 部件 GroupDocs.Metadata