Маніпулювання метаданими XMP

Без зусиль додавайте, редагуйте та витягуйте метадані з файлів EPS, надаючи вам повний контроль над інформацією вашого документа. Підніміть вміст файлів EPS на новий рівень за допомогою рішення Aspose.Page для C++!

 

Метадані XMP — це набір властивостей для опису файлу. Він написаний у форматі XML. Метадані включають інформацію про вміст файлу, деталі ідентифікації, які відрізняють його від інших файлів, та інші дані, пов’язані зі створенням, модифікацією та історією завантаження файлу. Крім того, він записує відомості про користувачів, які брали участь у створенні, редагуванні та завантаженні файлу.

Розкрийте потужність ваших файлів EPS за допомогою нашого рішення C++ API! Повна інтеграція з метаданими XMP, що дає вам повний контроль над документами EPS. Незалежно від того, чи керуєте ви цифровими активами, покращуєте інформацію про авторські права чи оптимізуєте свій творчий робочий процес, наш API спрощує процес, забезпечуючи точність і ефективність. Покращуйте свої можливості обробки метаданих і отримайте глибше розуміння своїх файлів EPS. Відчуйте бездоганну інтеграцію з метаданими XMP за допомогою нашого рішення C++ API. Придбайте рішення сьогодні або просто отримайте безкоштовну пробну версію, щоб дізнатися про функції додавання, редагування та отримання метаданих із файлів EPS! Для отримання додаткової інформації та прикладів роботи з метаданими XMP відвідайте документацію Aspose.Page API на GitHub . Спробуйте також веб-програму XMP Metadata Editor , щоб побачити, як можна використовувати цю функцію.

Щоб запустити приклад коду, вам знадобиться:

  • API Aspose.Page для C++, який є багатофункціональним, потужним і простим у використанні API для роботи з документами та перетворення для платформи C++.

  • Ви можете завантажити його останню версію безпосередньо, просто відкрийте менеджер пакунків NuGet, знайдіть Aspose.Page.Cpp і встановіть. Ви також можете використати наступну команду з консолі менеджера пакетів.

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

Додайте метадані XMP до файлу EPS за допомогою C++

Щоб вставити метадані XMP в EPS, вам потрібно буде використовувати сутності класу XmpMetadata . Зробіть наступні кроки:

  1. Встановіть шлях до каталогу, де знаходиться документ.
  2. Ініціалізація вхідного потоку для файлу EPS.
  3. Використовуйте клас PsDocument, щоб створити файл PS із вхідного потоку.
  4. Отримайте метадані XMP, викликавши метод GetXmpMetadata() . Якщо файл EPS не містить метаданих XMP, ми отримуємо новий, заповнений значеннями з коментарів метаданих PS.
  5. Збережіть змінений документ EPS, викликавши метод Save().
Додайте метадані 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;
}
}

Змініть метадані XMP файлу EPS за допомогою C++

Щоб додати елементи масиву до метаданих XMP, вам знову потрібно буде використати ті самі сутності та виконати подібні кроки. Додатковий крок вимагає використання SetArrayItem або AddArrayItem()

Змінити метадані 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 What is EPS File Format

EPS (EPSF) або формат файлу Інкапсульований PostScript — це формат, який насправді є програмою PS, яка описує, як виглядатиме окрема сторінка. Тобто це обмежений PS плюс окремі примітки, які допомагають інкапсулювати графіку PostScript в інший документ. EPS відмінно підтримує векторну графіку або комбіновану векторно-растрову графіку. Особливістю формату є те, що як тільки він імпортується в документ, його вже не можна редагувати. Це одна з причин конвертації цього формату на той, з яким ви легше працювати.