Zarządzanie tagami i danymi niestandardowymi w prezentacjach przy użyciu PHP
Omówienie
Ten artykuł wyjaśnia, jak Aspose.Slides działa z tagami i danymi niestandardowymi w prezentacjach PowerPoint. Krótko opisuje, jak dane są przechowywane w plikach PPTX, informuje, że dane specyficzne dla prezentacji mogą istnieć jako tagi i niestandardowe części XML, oraz opisuje tagi jako pary klucz‑wartość w postaci łańcucha znaków.
Pokazuje również, jak odczytywać wartości tagów oraz jak dodawać tagi do prezentacji, pojedynczego slajdu lub kształtu. Dodatkowo artykuł opisuje typowe zadania zarządzania tagami, takie jak czyszczenie 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 slajdzie będącym jednym z elementów prezentacji, część slajdu zawiera treść pojedynczego slajdu. Część slajdu może mieć explicite relacje do wielu części — takich jak Definiowane przez użytkownika tagi — określonych w ISO/IEC 29500.
Dane niestandardowe (specyficzne dla prezentacji) lub użytkownika mogą istnieć jako tagi (TagCollection) i CustomXmlParts (CustomXmlPartCollection).
Pobieranie wartości tagów
W slajdach tag odpowiada metodom DocumentProperties::getKeywords() i DocumentProperties::setKeywords(). Ten przykładowy kod pokazuje, jak uzyskać wartość tagu przy użyciu Aspose.Slides for PHP via Java dla Presentation:
$pres = new Presentation("pres.pptx");
try {
$keywords = $pres->getDocumentProperties()->getKeywords();
} finally {
if (!java_is_null($pres)) {
$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łasnej właściwości —
MyTag - wartość własnej właściwości —
My Tag Value
Jeśli potrzebujesz 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, jeśli chcesz kategoryzować lub zgrupować wszystkie prezentacje z krajów Ameryki Północnej, możesz utworzyć tag Ameryka Północna i przypisać odpowiednie kraje (USA, Meksyk i Kanada) jako wartości.
Ten przykładowy kod pokazuje, jak dodać tag do Presentation przy użyciu Aspose.Slides for PHP via Java:
$pres = new Presentation("pres.pptx");
try {
$tags = $pres->getCustomData()->getTags();
$pres->getCustomData()->getTags()->set_Item("MyTag", "My Tag Value");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Tagi mogą być również ustawione dla Slide:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$slide->getCustomData()->getTags()->set_Item("tag", "value");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Lub dowolnego pojedynczego Shape:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 100, 50);
$shape->getTextFrame()->setText("My text");
$shape->getCustomData()->getTags()->set_Item("tag", "value");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Ograniczenia
Tagi dodane za pośrednictwem kolekcji 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 PDF. W konsekwencji, niestandardowy identyfikator przypisany jako tag nie może zostać odczytany z otagowanego PDF.
Obejście: Możesz przechowywać niestandardowy identyfikator w Alt Text obiektu (np. $shape->setAlternativeText("MyId")). Po eksporcie 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ów obsługuje operację clear , która usuwa wszystkie pary klucz‑wartość jednocześnie.
Jak usunąć pojedynczy tag po nazwie bez iteracji po całej kolekcji?
Użyj operacji remove(name) na kolekcji tagów, aby usunąć tag po jego kluczu.
Jak mogę pobrać pełną listę nazw tagów w celu analizy lub filtrowania?
Użyj getNamesOfTags na kolekcji tagów; zwraca ona tablicę wszystkich nazw tagów.