Gestire i tag e i dati personalizzati nelle presentazioni usando C++
Panoramica
Questo articolo spiega come Aspose.Slides gestisce i tag e i dati personalizzati nelle presentazioni PowerPoint. Descrive brevemente come i dati sono archiviati nei file PPTX, osserva che i dati specifici della presentazione possono esistere come tag e parti XML personalizzate, e definisce i tag come coppie stringa chiave‑valore.
Mostra inoltre come leggere i valori dei tag e come aggiungere tag a una presentazione, a una singola slide o a una shape. Inoltre, l’articolo tratta le operazioni comuni di gestione dei tag, come cancellare tutti i tag, rimuovere un tag per nome e recuperare l’elenco dei nomi dei tag.
Archiviazione dati nei file di presentazione
I file PPTX—elementi con estensione .pptx—sono memorizzati nel formato PresentationML, parte della specifica Office Open XML. Il formato Office Open XML definisce la struttura dei dati contenuti nelle presentazioni.
Con una slide che è uno degli elementi delle presentazioni, una slide part contiene il contenuto di una singola slide. Una slide part può avere relazioni esplicite con molte parti—come i User Defined Tags—definite da ISO/IEC 29500.
I dati personalizzati (specifici di una presentazione) o dell’utente possono esistere come tag (ITagCollection) e CustomXmlParts (ICustomXmlPartCollection).
Ottenere i valori dei tag
In slides, un tag corrisponde alla proprietà IDocumentProperties.Keywords. Questo esempio di codice mostra come ottenere il valore di un tag con Aspose.Slides per C++ per la Presentation:
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
System::String keywords = pres->get_DocumentProperties()->get_Keywords();
Aggiungere tag alle presentazioni
Aspose.Slides consente di aggiungere tag alle presentazioni. Un tag tipicamente è composto da due elementi:
- il nome di una proprietà personalizzata -
MyTag - il valore della proprietà personalizzata -
My Tag Value
Se è necessario classificare alcune presentazioni in base a una regola o proprietà specifica, è possibile trarre vantaggio dall’aggiungere tag a quelle presentazioni. Ad esempio, se vuoi raggruppare tutte le presentazioni provenienti dai paesi del Nord America, puoi creare un tag “North American” e assegnare ai valori i paesi rilevanti (USA, Messico e Canada).
Questo esempio di codice mostra come aggiungere un tag a una Presentation usando Aspose.Slides per C++:
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
System::SharedPtr<ITagCollection> tags = pres->get_CustomData()->get_Tags();
pres->get_CustomData()->get_Tags()->idx_set(u"MyTag", u"My Tag Value");
I tag possono anche essere impostati per la Slide:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
slide->get_CustomData()->get_Tags()->idx_set(u"tag", u"value");
O per qualsiasi Shape individuale:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 50.0f);
shape->get_TextFrame()->set_Text(u"My text");
shape->get_CustomData()->get_Tags()->idx_set(u"tag", u"value");
Limitazioni
I tag aggiunti tramite la collezione di tag dei dati personalizzati usando get_CustomData()->get_Tags() sono memorizzati solo all’interno del file PowerPoint. Non vengono trasferiti alla struttura dei tag PDF quando la presentazione viene esportata in PDF. Di conseguenza, un identificatore personalizzato assegnato come tag non può essere recuperato dal PDF taggato.
Soluzione alternativa: è possibile memorizzare un identificatore personalizzato nel Alt Text dell’oggetto (ad esempio, shape->set_AlternativeText(u"MyId")). Dopo l’esportazione in PDF, l’Alt Text può apparire nella struttura dei tag PDF.
FAQ
Posso rimuovere tutti i tag da una presentazione, slide o shape in un’unica operazione?
Sì. La tag collection supporta l’operazione clear che elimina tutte le coppie chiave‑valore in un solo passaggio.
Come faccio a eliminare un singolo tag per nome senza iterare sull’intera collezione?
Utilizza l’operazione Remove(name) sulla TagCollection per eliminare il tag per la sua chiave.
Come posso recuperare l’elenco completo dei nomi dei tag per analisi o filtraggio?
Usa GetNamesOfTags sulla tag collection; restituisce un array con tutti i nomi dei tag.