Manipular metadatos XMP

Agregue, edite y recupere metadatos de archivos EPS sin esfuerzo, lo que le permitirá tener control total de la información de su documento. ¡Eleve el contenido de los archivos EPS a un nuevo nivel con Aspose.Page Solution para C++!

 

Los metadatos XMP son una colección de propiedades para describir un archivo. Está escrito en formato XML. Los metadatos incluyen información sobre el contenido del archivo, detalles de identificación que lo diferencian de otros archivos y otros datos relacionados con la creación, modificación y el historial de carga del archivo. Además, registra detalles sobre los usuarios que contribuyeron a la creación, edición y carga del archivo.

¡Desbloquee el poder de sus archivos EPS con nuestra solución API C++! Integración perfecta con metadatos XMP que le brinda control total sobre sus documentos EPS. Ya sea que esté administrando activos digitales, mejorando la información de derechos de autor u optimizando su flujo de trabajo creativo, nuestra API simplifica el proceso, garantizando precisión y eficiencia. Mejore sus capacidades de manejo de metadatos y obtenga información más profunda sobre sus archivos EPS. Experimente la integración perfecta con metadatos XMP utilizando nuestra solución API C++. Compre la solución hoy o simplemente obtenga una prueba gratuita para descubrir la funcionalidad de agregar, editar y recuperar metadatos de archivos EPS. Para obtener más información y ejemplos sobre cómo trabajar con metadatos XMP, visite la documentación de la API Aspose.Page en GitHub . Pruebe también nuestra aplicación web XMP Metadata Editor para ver cómo se puede utilizar la funcionalidad.

Para ejecutar el ejemplo de código necesitará:

  • Aspose.Page para C++ API, que es una API de conversión y manipulación de documentos rica en funciones, potente y fácil de usar para la plataforma C++.

  • Puede descargar su última versión directamente, simplemente abra el administrador de paquetes NuGet, busque Aspose.Page.Cpp e instálelo. También puede utilizar el siguiente comando desde la Consola del Administrador de paquetes.

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

Agregue metadatos XMP a un archivo EPS con C++

Para insertar metadatos XMP en EPS, necesitará utilizar entidades de la clase XmpMetadata . Tome los siguientes pasos:

  1. Establezca la ruta al directorio donde se encuentra el documento.
  2. Inicialice un flujo de entrada para el archivo EPS.
  3. Utilice la clase PsDocument para crear un archivo PS a partir del flujo de entrada.
  4. Recupere los metadatos XMP llamando al método GetXmpMetadata() . Si el archivo EPS no contiene metadatos XMP, obtenemos uno nuevo lleno de valores de los comentarios de metadatos PS.
  5. Guarde el documento EPS modificado llamando al método Save().
Agregar metadatos XMP
// The path to the documents directory.
System::String dataDir = RunExamples::GetDataDir_WorkingWithXMPMetadataInEPS();
// Initialize EPS file input stream
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(dataDir + u"add_input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Create PsDocument instance from stream
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
{
auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
{
psStream->Close();
});
try
{
// Get XMP metadata. If EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
System::SharedPtr<XmpMetadata> xmp = document->GetXmpMetadata();
// Check metadata values extracted from PS metadata comments and set up in new XMP metadata
// Get "CreatorTool" value
if (xmp->Contains(u"xmp:CreatorTool"))
{
System::Console::WriteLine(System::String(u"CreatorTool: ") + xmp->idx_get(u"xmp:CreatorTool")->ToStringValue());
}
// Get "CreateDate" value
if (xmp->Contains(u"xmp:CreateDate"))
{
System::Console::WriteLine(System::String(u"CreateDate: ") + xmp->idx_get(u"xmp:CreateDate")->ToStringValue());
}
// Get "format" value
if (xmp->Contains(u"dc:format"))
{
System::Console::WriteLine(System::String(u"Format: ") + xmp->idx_get(u"dc:format")->ToStringValue());
}
// Get "title" value
if (xmp->Contains(u"dc:title"))
{
System::Console::WriteLine(System::String(u"Title: ") + xmp->idx_get(u"dc:title")->ToArray()->idx_get(0)->ToStringValue());
}
// Get "creator" value
if (xmp->Contains(u"dc:creator"))
{
System::Console::WriteLine(System::String(u"Creator: ") + xmp->idx_get(u"dc:creator")->ToArray()->idx_get(0)->ToStringValue());
}
// Get "MetadataDate" value
if (xmp->Contains(u"xmp:MetadataDate"))
{
System::Console::WriteLine(System::String(u"MetadataDate: ") + xmp->idx_get(u"xmp:MetadataDate")->ToStringValue());
}
// Save EPS file with new XMP metadata
// Create ouput stream
{
System::SharedPtr<System::IO::FileStream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output/" + u"add_output.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Clearing resources under 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_1({ outPsStream});
// ------------------------------------------
try
{
// Save EPS file
document->Save(outPsStream);
}
catch(...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
}
catch (...)
{
throw;
}
}

Cambiar metadatos XMP de un archivo EPS con C++

Para agregar elementos de matriz a los metadatos XMP, nuevamente necesitará usar las mismas entidades y seguir pasos similares. El paso adicional requiere usar SetArrayItem o AddArrayItem()

Cambiar metadatos XMP
// The path to the documents directory.
System::String dataDir = RunExamples::GetDataDir_WorkingWithXMPMetadataInEPS();
// Initialize EPS file input stream
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(dataDir + u"add_simple_props_input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Create PsDocument instance from stream
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
{
auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
{
psStream->Close();
});
try
{
// Get XMP metadata. If EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
System::SharedPtr<XmpMetadata> xmp = document->GetXmpMetadata();
//Change XMP metadata values
// Add one more title. I will be added at the end of array by default.
xmp->AddArrayItem(u"dc:title", System::MakeObject<XmpValue>(u"NewTitle"));
// Add one more creator. It will be added in the array by an index (0).
xmp->AddArrayItem(u"dc:creator", 0, System::MakeObject<XmpValue>(u"NewCreator"));
// Save EPS file with changed XMP metadata
// Create ouput stream
{
System::SharedPtr<System::IO::FileStream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output/" + u"add_array_items_output.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Clearing resources under 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_1({ outPsStream});
// ------------------------------------------
try
{
// Save EPS file
document->Save(outPsStream);
}
catch(...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
}
catch (...)
{
throw;
}
}

EPS Qué es EPS Formato de archivo

EPS (ERSF) o formato de archivo PostScript encapsulado es el formato que en realidad es un programa PS que describe cómo se vería una sola página. En realidad, es PS limitado más notas particulares que ayudan a encapsular gráficos PostScript en otro documento. EPS admite perfectamente gráficos vectoriales o gráficos combinados de vector-ráster. La peculiaridad del formato es que tan pronto como se importa a un documento, ya no se puede editar. Esa es una de las razones para convertir este formato al que puede trabajar.