Zarządzanie tagami i danymi niestandardowymi w prezentacjach przy użyciu Java

Przegląd

Ten artykuł wyjaśnia, jak Aspose.Slides współpracuje z tagami i danymi niestandardowymi w prezentacjach PowerPoint. Krótko opisuje, jak dane są przechowywane w plikach PPTX, zauważa, że dane specyficzne dla prezentacji mogą istnieć jako tagi i niestandardowe części XML, oraz opisuje tagi jako pary klucz‑wartość typu string.

Pokazuje również, jak odczytać wartości tagów oraz jak dodać tagi do prezentacji, pojedynczego slajdu lub kształtu. Dodatkowo artykuł omawia typowe zadania zarządzania tagami, takie jak usuwanie wszystkich tagów, usuwanie tagu po nazwie oraz pobieranie listy nazw tagów.

Przechowywanie danych w plikach prezentacji

Pliki PPTX — elementy z rozszerzeniem .pptx — są przechowywane w formacie PresentationML, który jest częścią specyfikacji Office Open XML. Format Office Open XML definiuje strukturę danych zawartych w prezentacjach.

Przy czym slide jest jednym z elementów prezentacji, a slide part zawiera zawartość pojedynczego slajdu. Część slajdu może mieć explicite powiązania z wieloma częściami — na przykład User Defined Tags — zdefiniowanymi w ISO/IEC 29500.

Dane niestandardowe (specyficzne dla prezentacji) lub użytkownika mogą istnieć jako tagi (ITagCollection) oraz CustomXmlParts (ICustomXmlPartCollection).

Pobieranie wartości tagów

W Slides tag odpowiada metodom IDocumentProperties.getKeywords() i IDocumentProperties.setKeywords(). Ten przykładowy kod pokazuje, jak uzyskać wartość tagu przy użyciu Aspose.Slides for Java dla Presentation:

Presentation pres = new Presentation("pres.pptx");
try{
    String keywords = pres.getDocumentProperties().getKeywords();
} finally {
    if (pres != null) pres.dispose();
}

Dodawanie tagów do prezentacji

Aspose.Slides umożliwia dodawanie tagów do prezentacji. Tag zazwyczaj składa się z dwóch elementów:

  • nazwa właściwości niestandardowej — MyTag
  • wartość właściwości niestandardowej — My Tag Value

Jeśli musisz klasyfikować niektóre prezentacje według określonej reguły lub właściwości, możesz skorzystać z dodawania tagów do tych prezentacji. Na przykład, aby pogrupować wszystkie prezentacje pochodzące z krajów Ameryki Północnej, możesz utworzyć tag „North American” i przypisać odpowiednie kraje (USA, Meksyk, Kanada) jako wartości.

Ten przykładowy kod pokazuje, jak dodać tag do Presentation przy użyciu Aspose.Slides for Java:

Presentation pres = new Presentation("pres.pptx");
try {
    ITagCollection tags = pres.getCustomData().getTags();
    pres.getCustomData().getTags().set_Item("MyTag", "My Tag Value");
} finally {
    if (pres != null) pres.dispose();
}

Tagi można również ustawiać dla Slide:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    slide.getCustomData().getTags().set_Item("tag", "value");
} finally {
    if (pres != null) pres.dispose();
}

lub dowolnego pojedynczego Shape:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 50);
    shape.getTextFrame().setText("My text");
    shape.getCustomData().getTags().set_Item("tag", "value");
} finally {
    if (pres != null) pres.dispose();
}

Ograniczenia

Tagi dodane przez kolekcję tagów danych niestandardowych przy użyciu getCustomData().getTags() są przechowywane wyłącznie w pliku PowerPoint. Nie są przenoszone do struktury tagów PDF podczas eksportu prezentacji do formatu PDF. W konsekwencji niestandardowy identyfikator przypisany jako tag nie może zostać odczytany z oznaczonego PDF‑a.

Rozwiązanie obejściowe: można przechowywać niestandardowy identyfikator w Alt Text obiektu (np. shape.setAlternativeText("MyId")). Po wyeksportowaniu do PDF, Alt Text może pojawić się w strukturze tagów PDF.

FAQ

Czy mogę usunąć wszystkie tagi z prezentacji, slajdu lub kształtu w jednej operacji?

Tak. Kolekcja tag collection obsługuje operację clear usuwającą wszystkie pary klucz‑wartość naraz.

Jak usunąć pojedynczy tag po nazwie bez iteracji po całej kolekcji?

Użyj operacji Remove(name) na tag collection, aby usunąć tag po jego kluczu.

Jak pobrać pełną listę nazw tagów w celach analitycznych lub filtrowania?

Użyj getNamesOfTags na tag collection; metoda zwraca tablicę wszystkich nazw tagów.