XMPメタデータの操作

EPSファイルからメタデータを簡単に追加、編集、取得し、ドキュメントの情報を完全に制御できます。Aspose.Page Solution for C++でEPSファイルのコンテンツを新しいレベルへ!

 

XMPメタデータは、ファイルを記述するためのプロパティのコレクションです。XML形式で記述されます。メタデータには、ファイルのコンテンツに関する情報、他のファイルと区別する識別詳細、ファイルの作成、変更、アップロード履歴に関連するその他のデータが含まれます。さらに、ファイルの作成、編集、アップロードに貢献したユーザーの詳細も記録されます。

C++ APIソリューションでEPSファイルのポテンシャルを解放しましょう!XMPメタデータとのシームレスな統合により、EPSドキュメントを完全に制御できます。デジタルアセットの管理、著作権情報の強化、クリエイティブなワークフローの最適化など、APIがプロセスを簡素化し、精度と効率を保証します。メタデータ処理能力を向上させ、EPSファイルへのより深い洞察を得ましょう。C++ APIソリューションを使用してXMPメタデータとのシームレスな統合を体験してください。今日ソリューションを購入するか、無料トライアルを取得してEPSファイルからメタデータを追加、編集、取得する機能を試してみてください!XMPメタデータの操作に関する詳細情報と例については、 GitHub のAspose.Page APIドキュメントをご覧ください。また、機能の使用方法を確認するために、 XMPメタデータエディタ Webアプリもお試しください。

コード例を実行するには、次のものが必要です:

  • C++プラットフォーム向けの機能豊富でパワフルで使いやすいドキュメント操作・変換APIである、Aspose.Page for C++ API。

  • 最新バージョンは直接ダウンロードできます。NuGetパッケージマネージャーを開き、Aspose.Page.Cppを検索してインストールします。パッケージマネージャーコンソールから次のコマンドを使用することもできます。

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

C++でEPSファイルにXMPメタデータを追加する

EPSにXMPメタデータを挿入するには、 XmpMetadata Classのエンティティを使用する必要があります。次の手順に従ってください:

  1. ドキュメントが保存されているディレクトリへのパスを設定します。
  2. EPSファイルの入力ストリームを初期化します。
  3. PsDocumentクラスを使用して、入力ストリームからPSファイルを作成します。
  4. GetXmpMetadata() メソッドを呼び出してXMPメタデータを取得します。EPSファイルにXMPメタデータが含まれていない場合は、PSメタデータコメントから値が入力された新しいメタデータが取得されます。
  5. 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 (Encapsulated PostScript) は、1 ページのレイアウトを記述する PostScript ベースのフォーマットです。ベクター画像やベクター‑ラスタ混合画像に最適です。インポート後は編集できないため、SVG や PDF など編集可能な形式に変換して使用します。