使用 XMP EPS 元数据

使用 C# 添加、编辑和获取 EPS 文件的元数据

 

XMP 元数据是一组表征文件的属性,并以 XML 格式表示。它包含描述文件内容的文件信息和允许将该文件与其他文件区分开来的标识。它还存储有关创建和修改、以某种方式参与创建、更改和上传文件的用户以及文件转换历史的数据。

Aspose.Page API 解决方案在不同的其他功能中允许使用 EPS 文件的 XMP 元数据。在这里,您将找到说明如何添加、编辑和获取它的信息。了解如何使用 的更多示例 XMP 元数据 。也可以试试我们的 XMP Metadata Editor 网络应用程序,看看如何使用该功能。

将 XMP 元数据添加到 EPS 文件 C# 的步骤

  1. 设置文档目录的路径。
  2. 初始化 EPS 文件输入流。
  3. 使用 PsDocument 类 从流中创建 PS 文件。
  4. 要获取 XMP 元数据,请使用 GetXmpMetadata() 方法。
  5. 使用 Save() 方法保存更改后的 EPS 文档。

添加 XMP 元数据的 C# 代码

    using Aspose.Page.EPS;
    using Aspose.Page.EPS.Device;
    using Aspose.Page.EPS.XMP;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_WorkingWithXMPMetadataInEPS();
    // Initialize an EPS file input stream
    System.IO.FileStream psStream = new System.IO.FileStream(dataDir + "add_input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read);
    // Create the PsDocument instance from the stream
    PsDocument document = new PsDocument(psStream);            

    try
    {
        // Get XMP metadata. If the EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
        XmpMetadata xmp = document.GetXmpMetadata();

        // Check metadata values extracted from PS metadata comments and set up in new XMP metadata

        // Get the "CreatorTool" value
        if (xmp.Contains("xmp:CreatorTool"))
        Console.WriteLine("CreatorTool: " + xmp["xmp:CreatorTool"].ToStringValue());

        // Get the "CreateDate" value
        if (xmp.Contains("xmp:CreateDate"))
            Console.WriteLine("CreateDate: " + xmp["xmp:CreateDate"].ToStringValue());

        // Get the "format" value
        if (xmp.Contains("dc:format"))
            Console.WriteLine("Format: " + xmp["dc:format"].ToStringValue());

        // Get the "title" value
        if (xmp.Contains("dc:title"))
            Console.WriteLine("Title: " + xmp["dc:title"].ToArray()[0].ToStringValue());

        // Get the "creator" value
        if (xmp.Contains("dc:creator"))
            Console.WriteLine("Creator: " + xmp["dc:creator"].ToArray()[0].ToStringValue());

        // Get the "MetadataDate" value
        if (xmp.Contains("xmp:MetadataDate"))
            Console.WriteLine("MetadataDate: " + xmp["xmp:MetadataDate"].ToStringValue());

        // Save the EPS file with new XMP metadata

        // Create the ouput stream
        using (System.IO.FileStream outPsStream = new System.IO.FileStream(dataDir + "add_output.eps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
        {
            // Save the EPS file
            document.Save(outPsStream);
        }

    }
    finally
    {
        psStream.Close();
    }

将 XMP 元数据编辑为 EPS 文件 C# 的步骤

  1. 设置文档目录的路径。
  2. 初始化 EPS 文件输入流。
  3. 使用 PsDocument 类 从流创建 PS 文件。
  4. 要获取 XMP 元数据,请使用 GetXmpMetadata() 方法。
  5. 要更改 XMP 元数据值,请使用 SetArrayItem() 方法。
  6. 保存更改后的 EPS 文件。

用于更改 XMP 元数据的 C# 代码

    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_WorkingWithXMPMetadataInEPS();
    // Initialize an EPS file input stream
    System.IO.FileStream psStream = new System.IO.FileStream(dataDir + "add_simple_props_input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read);
    // Create a PsDocument instance from the stream
    PsDocument document = new PsDocument(psStream);            

    try
    {
        // Get XMP metadata. If the EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
        XmpMetadata xmp = document.GetXmpMetadata();

        //Change the XMP metadata values

        // Change the title item at index 0
        xmp.SetArrayItem("dc:title", 0, new XmpValue("NewTitle"));

        // Change the creator item at index 0
        xmp.SetArrayItem("dc:creator", 0, new XmpValue("NewCreator"));

        // Save the EPS file with the changed XMP metadata

        // Create an ouput stream
        using (System.IO.FileStream outPsStream = new System.IO.FileStream(dataDir + "change_array_items_output.eps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
        {
            // Save the EPS file
            document.Save(outPsStream);
        }

    }
    finally
    {
        psStream.Close();
    }

获取 EPS 文件 C# 的 XMP 元数据的步骤

  1. 设置文档目录的路径。
  2. 初始化 EPS 文件输入流。
  3. 使用 PsDocument 类 从流创建 PS 文件。
  4. 使用 GetXmpMetadata() 方法获取 XMP 元数据。

获取 XMP 元数据的 C# 代码

    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_WorkingWithXMPMetadataInEPS();
    // Initialize an EPS file input stream
    System.IO.FileStream psStream = new System.IO.FileStream(dataDir + "get_input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read);
    // Create a PsDocument instance from the stream
    PsDocument document = new PsDocument(psStream);            

    try
    {
        // Get XMP metadata. If the EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
        XmpMetadata xmp = document.GetXmpMetadata();

        // Get the "CreatorTool" value
        if (xmp.Contains("xmp:CreatorTool"))
            Console.WriteLine("CreatorTool: " + xmp["xmp:CreatorTool"].ToStringValue());
                
        // Get the "CreateDate" value
        if (xmp.Contains("xmp:CreateDate"))
            Console.WriteLine("CreateDate: " + xmp["xmp:CreateDate"].ToStringValue());

        // Get a width of a thumbnail image if exists
        if (xmp.Contains("xmp:Thumbnails") && xmp["xmp:Thumbnails"].IsArray)
        {
            XmpValue val = xmp["xmp:Thumbnails"].ToArray()[0];
            if (val.IsNamedValues && val.ToDictionary().ContainsKey("xmpGImg:width"))
                Console.WriteLine("Thumbnail Width: " + val.ToDictionary()["xmpGImg:width"].ToInteger());
        }

        // Get the "Format" value
        if (xmp.Contains("dc:format"))
            Console.WriteLine("Format: " + xmp["dc:format"].ToStringValue());

        // Get the "DocumentID" value
        if (xmp.Contains("xmpMM:DocumentID"))
            Console.WriteLine("DocumentID: " + xmp["xmpMM:DocumentID"].ToStringValue());

    }
    finally
    {
        psStream.Close();
    }



常问问题

1. 什么是 XMP 元数据?

XMP 是可扩展元数据平台的缩写,是在媒体文件中嵌入元数据属性的标准。

2. XMP 中包含哪些信息?

有关于应用程序的作者、编辑者和创建者的信息,包括版本、标题、描述、关键字、允许唯一标识文件和历史信息的标识符。

3. 如何将 XMP 元数据添加到 EPS 文件?

设置文档目录的路径并从流创建 EPS 文件。要添加 XMP 元数据,请使用 XmpMetadata 类的 Add() 方法。

EPS 什么是EPS文件格式

EPS (ERSF) 或 Encapsulated PostScript File Format 是一种实际上是一种 PS 程序的格式,它描述了单个页面的外观。它实际上是有限的 PS 加上有助于将 PostScript 图形封装到另一个文档的特殊注释。 EPS 完美支持矢量图形或组合矢量光栅图形。该格式的特点是,一旦导入到文档中,就无法再对其进行编辑。这就是将此格式转换为您可以使用的格式的原因之一。