Memanipulasi Metadata XMP
Tambahkan, edit, dan ambil metadata dari file EPS dengan mudah, sehingga Anda memiliki kendali penuh atas informasi dokumen Anda. Tingkatkan konten file EPS ke level baru dengan Aspose.Page Solution untuk C++!
Metadata XMP adalah kumpulan properti untuk mendeskripsikan file. Itu ditulis dalam format XML. Metadata mencakup informasi tentang konten file, detail identifikasi yang membedakannya dari file lain, dan data lain yang terkait dengan pembuatan, modifikasi, dan riwayat pengunggahan file. Selain itu, ini mencatat detail tentang pengguna yang berkontribusi pada pembuatan, pengeditan, dan pengunggahan file.
Buka kekuatan file EPS Anda dengan solusi C++ API kami! Integrasi sempurna dengan metadata XMP yang memberi Anda kendali penuh atas dokumen EPS Anda. Baik Anda mengelola aset digital, menyempurnakan informasi hak cipta, atau mengoptimalkan alur kerja kreatif Anda, API kami menyederhanakan prosesnya, memastikan presisi dan efisiensi. Tingkatkan kemampuan penanganan metadata Anda dan dapatkan wawasan lebih mendalam tentang file EPS Anda. Rasakan integrasi sempurna dengan metadata XMP menggunakan solusi C++ API kami. Beli solusinya hari ini atau dapatkan uji coba gratis untuk menemukan fungsi menambahkan, mengedit, dan mengambil metadata dari file EPS! Untuk informasi lebih lanjut dan contoh cara bekerja dengan metadata XMP, kunjungi dokumentasi Aspose.Page API di GitHub . Coba juga aplikasi web XMP Metadata Editor kami, untuk melihat bagaimana fungsi tersebut dapat digunakan.
Untuk menjalankan contoh kode, Anda memerlukan:
Aspose.Page untuk C++ API yang kaya fitur, kuat dan mudah digunakan manipulasi dokumen dan API konversi untuk platform C++.
Anda bisa langsung mendownload versi terbarunya, cukup buka NuGet package manager, cari Aspose.Page.Cpp lalu install. Anda juga dapat menggunakan perintah berikut dari Package Manager Console.
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
Tambahkan metadata XMP ke file EPS dengan C++
Untuk memasukkan metadata XMP ke EPS, Anda perlu menggunakan entitas Kelas XmpMetadata . Ambil langkah selanjutnya:
- Tetapkan jalur ke direktori tempat dokumen berada.
- Inisialisasi aliran input untuk file EPS.
- Gunakan Kelas PsDocument untuk membuat file PS dari aliran input.
- Ambil metadata XMP dengan memanggil Metode GetXmpMetadata() . Jika file EPS tidak berisi metadata XMP, kami mendapatkan file baru yang berisi nilai dari komentar metadata PS.
- Simpan dokumen EPS yang diubah dengan memanggil metode Simpan().
Tambahkan metadata 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; | |
} | |
} |
Ubah metadata XMP file EPS dengan C++
Untuk menambahkan item array ke metadata XMP, Anda perlu menggunakan entitas yang sama lagi dan mengambil langkah serupa. Langkah tambahan memerlukan penggunaan SetArrayItem atau AddArrayItem()
Ubah metadata 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 Apa itu Format File EPS
EPS (ERSF) atau Encapsulated PostScript File Format adalah format yang sebenarnya merupakan program PS yang menjelaskan seperti apa tampilan satu halaman. Ini sebenarnya adalah PS terbatas ditambah catatan khusus yang membantu merangkum grafik PostScript ke dokumen lain. EPS dengan sempurna mendukung grafik vektor atau grafik vektor-raster gabungan. Keunikan formatnya adalah segera setelah diimpor ke dalam dokumen, tidak dapat diedit lagi. Itulah salah satu alasan untuk mengonversi format ini ke format yang dapat Anda gunakan.