XMP メタデータの操作
EPS ファイルのメタデータを簡単に追加、編集、取得できるため、ドキュメントの情報を完全に制御できます。 C++ 用 Aspose.Page ソリューションを使用して、EPS ファイルのコンテンツを新しいレベルに引き上げます。
XMP メタデータは、ファイルを説明するためのプロパティのコレクションです。 XML形式で書かれています。メタデータには、ファイルのコンテンツに関する情報、ファイルを他のファイルと区別する識別の詳細、ファイルの作成、変更、アップロード履歴に関連するその他のデータが含まれます。さらに、ファイルの作成、編集、アップロードに貢献したユーザーに関する詳細が記録されます。
当社の C++ API ソリューションで EPS ファイルのパワーを解放しましょう! XMP メタデータとのシームレスな統合により、EPS ドキュメントを完全に制御できます。デジタル資産の管理、著作権情報の強化、クリエイティブワークフローの最適化のいずれの場合でも、当社の API はプロセスを簡素化し、精度と効率を確保します。メタデータ処理機能を向上させ、EPS ファイルについてより深い洞察を得ることができます。 C++ API ソリューションを使用して、XMP メタデータとのシームレスな統合を体験してください。今すぐソリューションを購入するか、無料トライアル版を入手して、EPS ファイルからメタデータを追加、編集、取得する機能を確認してください。 XMP メタデータの操作に関する詳細と例については、 GitHub の Aspose.Page API ドキュメントを参照してください。 XMP メタデータ エディター Web アプリも試して、機能がどのように使用されるかを確認してください。
コード例を実行するには、次のものが必要です。
Aspose.Page for C++ API は、機能が豊富で強力で使いやすい、C++ プラットフォーム用のドキュメント操作および変換 API です。
最新バージョンを直接ダウンロードできます。NuGet パッケージ マネージャーを開いて、Aspose.Page.Cpp を検索してインストールします。パッケージ マネージャー コンソールから次のコマンドを使用することもできます。
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
C++ を使用して XMP メタデータを EPS ファイルに追加する
XMP メタデータを EPS に挿入するには、 XmpMetadata クラスのエンティティを使用する必要があります。次の手順を実行します。
- ドキュメントが存在するディレクトリへのパスを設定します。
- EPS ファイルの入力ストリームを初期化します。
- PsDocument クラスを使用して、入力ストリームから PS ファイルを作成します。
- GetXmpMetadata() メソッドを呼び出して、XMP メタデータを取得します。 EPS ファイルに XMP メタデータが含まれていない場合は、PS メタデータ コメントからの値が埋め込まれた新しいファイルを取得します。
- Save() メソッドを呼び出して、変更された EPS ドキュメントを保存します。
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; | |
| } | |
| } |
C++ を使用して EPS ファイルの XMP メタデータを変更する
配列項目を 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 EPS ファイル形式とは
EPS (ERSF) または Encapsulated PostScript File Format は、1 ページがどのように見えるかを記述する実際の PS プログラムである形式です。実際には、PostScript グラフィックスを別のドキュメントにカプセル化するのに役立つ限定的な PS と特定のメモです。 EPS は、ベクター グラフィックスまたは組み合わせたベクター ラスター グラフィックスを完全にサポートします。この形式の特徴は、ドキュメントにインポートされるとすぐに編集できないことです。これが、この形式を使用できる形式に変換する理由の 1 つです。