Manipolare i metadati XMP

Aggiungi, modifica e recupera senza sforzo i metadati dai file EPS, ottenendo il controllo completo sulle informazioni del documento. Porta il contenuto dei file EPS a un nuovo livello con Aspose.Page Solution per C++!

 

I metadati XMP sono una raccolta di proprietà per descrivere un file. Sono scritti in formato XML. I metadati includono informazioni sul contenuto del file, dettagli identificativi che lo differenziano dagli altri file, e altri dati relativi alla cronologia di creazione, modifica e caricamento del file. Inoltre, registrano dettagli sugli utenti che hanno contribuito alla creazione, alla modifica e al caricamento del file.

Sfrutta il potenziale dei tuoi file EPS con la nostra soluzione API C++! Integrazione perfetta con i metadati XMP che ti dà il controllo completo sui tuoi documenti EPS. Che tu stia gestendo risorse digitali, migliorando le informazioni sul copyright o ottimizzando il tuo flusso di lavoro creativo, la nostra API semplifica il processo, garantendo precisione ed efficienza. Migliora le tue capacità di gestione dei metadati e ottieni informazioni più approfondite sui tuoi file EPS. Sperimenta l’integrazione perfetta con i metadati XMP utilizzando la nostra soluzione API C++. Acquista la soluzione oggi o prova semplicemente una versione di prova gratuita per scoprire le funzionalità di aggiunta, modifica e recupero dei metadati dai file EPS! Per ulteriori informazioni ed esempi su come lavorare con i metadati XMP, visita la documentazione dell’API Aspose.Page su GitHub . Prova anche la nostra app web Editor di Metadati XMP per vedere come le funzionalità possono essere utilizzate.

Per eseguire l'esempio di codice, avrai bisogno di:

  • L'API Aspose.Page per C++, un'API di manipolazione e conversione dei documenti ricca di funzionalità, potente e facile da usare per la piattaforma C++.

  • Puoi scaricare la sua versione più recente direttamente, basta aprire il gestore di pacchetti NuGet, cercare Aspose.Page.Cpp e installarlo. Puoi anche usare il seguente comando dalla Console del Gestore Pacchetti.

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

Aggiungere metadati XMP a un file EPS con C++

Per inserire metadati XMP in EPS, dovrai utilizzare entità della XmpMetadata Class. Segui i prossimi passaggi:

  1. Imposta il percorso della directory in cui si trova il documento.
  2. Inizializza un flusso di input per il file EPS.
  3. Utilizza la Classe PsDocument per creare un file PS dal flusso di input.
  4. Recupera i metadati XMP chiamando il GetXmpMetadata() Metodo. Se il file EPS non contiene metadati XMP, otteniamo uno nuovo riempito con valori dai commenti dei metadati PS.
  5. Salva il documento EPS modificato chiamando il metodo Save().
Aggiungere metadati 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;
        }
    }

Modificare i metadati XMP di un file EPS con C++

Per aggiungere elementi di array ai metadati XMP, dovrai di nuovo utilizzare le stesse entità e seguire passaggi simili. Il passaggio aggiuntivo richiede l’uso di SetArrayItem o AddArrayItem()

Modificare i metadati 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 Cos'è il formato file EPS

EPS (Encapsulated PostScript) è un formato basato su PostScript che descrive una singola pagina. Ideale per grafica vettoriale e combinazioni vettoriale‑raster. Dopo l’importazione il file non è più modificabile; si consiglia di convertirlo in un formato editabile come SVG o PDF.