Pobieranie i aktualizacja informacji o prezentacji w JavaScript
Przegląd
Aspose.Slides może rozpoznać format prezentacji i odczytać metadane dokumentu bez tworzenia pełnego modelu obiektowego prezentacji. Jest to przydatne, gdy trzeba klasyfikować pliki, tworzyć inwentaryzację lub sprawdzać właściwości przed podjęciem decyzji o załadowaniu i przetworzeniu zawartości prezentacji.
Ten artykuł demonstruje lekką inspekcję za pomocą PresentationFactory i PresentationInfo, a także skierowane aktualizacje za pomocą DocumentProperties.
Sprawdź format prezentacji
Użyj PresentationFactory.getPresentationInfo do sprawdzenia pliku bez tworzenia instancji Presentation. Metoda PresentationInfo.getLoadFormat zwraca wykryty format, taki jak PPTX, PPT lub ODP.
const aspose = require("aspose.slides.via.java");
const fileNames = ["pres.pptx", "pres.ppt", "pres.odp"];
for (const fileName of fileNames) {
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(fileName);
const loadFormat = presentationInfo.getLoadFormat();
let formatName = `Other (${loadFormat})`;
if (loadFormat === aspose.LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat === aspose.LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat === aspose.LoadFormat.Odp) {
formatName = "ODP";
}
console.log(`${fileName}: ${formatName}`);
}
Zbuduj lekką inwentaryzację prezentacji
Gdy przetwarzasz wiele plików prezentacji, możesz potrzebować kompaktowej inwentaryzacji do walidacji, indeksowania lub systemu zarządzania dokumentami. W takim scenariuszu użyj PresentationFactory.getPresentationInfo, aby uzyskać obiekt PresentationInfo, a następnie wywołaj PresentationInfo.readDocumentProperties, aby odczytać metadane dokumentu. To podejście nie tworzy instancji Presentation ani nie wymaga przeglądania pełnego modelu obiektowego prezentacji.
Rozszerzone właściwości udostępniane przez DocumentProperties zapewniają następujące wartości inwentaryzacji:
| Metoda | Wartość inwentaryzacji |
|---|---|
| getSlides | Łączna liczba slajdów. |
| getHiddenSlides | Liczba ukrytych slajdów. |
| getNotes | Liczba slajdów zawierających notatki. |
| getParagraphs | Łączna liczba akapitów, jeśli dostępna. |
| getWords | Łączna liczba słów. |
| getMultimediaClips | Łączna liczba klipów audio i wideo. |
Poniższy przykład odczytuje te wartości bez tworzenia obiektu Presentation i wyświetla zwartą inwentaryzację. Łączy również DocumentProperties.getHeadingPairs z DocumentProperties.getTitlesOfParts, aby wyświetlić grupy zawartości, takie jak czcionki, motywy i tytuły slajdów.
const path = require("path");
const aspose = require("aspose.slides.via.java");
const filePath = "sample.pptx";
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(filePath);
const documentProperties = presentationInfo.readDocumentProperties();
const loadFormat = presentationInfo.getLoadFormat();
let formatName = `Other (${loadFormat})`;
if (loadFormat === aspose.LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat === aspose.LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat === aspose.LoadFormat.Odp) {
formatName = "ODP";
}
console.log(`File: ${path.basename(filePath)}`);
console.log(`Format: ${formatName}`);
console.log(`Title: ${documentProperties.getTitle()}`);
console.log(`Author: ${documentProperties.getAuthor()}`);
console.log("Statistics:");
console.log(` Slides: ${documentProperties.getSlides()}`);
console.log(` Hidden slides: ${documentProperties.getHiddenSlides()}`);
console.log(` Slides with notes: ${documentProperties.getNotes()}`);
console.log(` Paragraphs: ${documentProperties.getParagraphs()}`);
console.log(` Words: ${documentProperties.getWords()}`);
console.log(` Multimedia clips: ${documentProperties.getMultimediaClips()}`);
const headingPairs = documentProperties.getHeadingPairs() || [];
const titlesOfParts = documentProperties.getTitlesOfParts() || [];
let partIndex = 0;
if (headingPairs.length === 0 || titlesOfParts.length === 0) {
console.log("Content groups: not available");
} else {
console.log("Content groups:");
for (const headingPair of headingPairs) {
const partCount = headingPair.getCount();
console.log(` ${headingPair.getName()} (${partCount})`);
for (let partOffset = 0; partOffset < partCount && partIndex < titlesOfParts.length; partOffset++) {
console.log(` - ${titlesOfParts[partIndex]}`);
partIndex++;
}
}
if (partIndex < titlesOfParts.length) {
console.log(" Other parts:");
while (partIndex < titlesOfParts.length) {
console.log(` - ${titlesOfParts[partIndex]}`);
partIndex++;
}
}
}
Każdy HeadingPair dostarcza nazwę grupy przez HeadingPair.getName, oraz liczbę elementów w tej grupie przez HeadingPair.getCount. DocumentProperties.getTitlesOfParts zwraca płaską, uporządkowaną tablicę, więc należy pobrać liczbę kolejnych tytułów określoną przez każdy heading pair.
Zapisane metadane i ograniczenia formatu
Właściwości inwentaryzacji zwracane przez PresentationInfo.readDocumentProperties odzwierciedlają metadane dostępne w dokumencie źródłowym. Aspose.Slides nie ładuje i nie przegląda modelu obiektowego prezentacji, aby przeliczyć te wartości w tym wywołaniu. Brakujące właściwości są reprezentowane przez wartości domyślne, a zapisane wartości mogą być nieaktualne, jeśli aplikacja ostatnio zapisująca plik nie zaktualizowała właściwości dokumentu.
- PPTX: Format zapewnia rozszerzone właściwości dokumentu dla liczby slajdów, notatek, ukrytych slajdów, akapitów, słów i multimediów, a także par nagłówków i tytułów części. Dostępność zależy od tego, które właściwości zostały zapisane przez twórcę dokumentu.
- PPT: Format binarny może przechowywać odpowiadające właściwości podsumowujące dokument. Jeśli właściwość jest nieobecna lub nie została odświeżona przez twórcę dokumentu, Aspose.Slides zwraca jej zapisaną lub wartość domyślną, zamiast obliczać ją na podstawie slajdów.
- ODP: Metadane OpenDocument dostarczają ogólne statystyki dokumentu, takie jak liczba stron, akapitów i słów, ale te wartości nie odpowiadają wszystkim rozszerzonym właściwościom specyficznym dla PowerPointa. Metadane ukrytych slajdów, slajdów z notatkami, multimediów, par nagłówków i tytułów części mogą być niedostępne, a właściwości inwentaryzacji mogą zwracać wartości domyślne. Nie traktuj wartości zero ani pustej tablicy jako ostatecznego dowodu, że odpowiadająca zawartość jest nieobecna.
Używaj lekkiego podejścia opartego na metadanych do inwentaryzacji i wstępnych sprawdzeń. Załaduj prezentację i przeanalizuj jej bieżący model obiektowy, gdy wynik musi odzwierciedlać zmiany w pamięci lub gdy trzeba zweryfikować rzeczywistą zawartość prezentacji.
Zaktualizuj właściwości prezentacji
Właściwości zwracane przez PresentationInfo.readDocumentProperties mogą być również zmieniane bez tworzenia instancji Presentation. Zastosuj zmiany za pomocą PresentationInfo.updateDocumentProperties, a następnie zapisz powiązaną prezentację przy użyciu PresentationInfo.writeBindedPresentation.
Poniższy obraz pokazuje oryginalne właściwości dokumentu prezentacji PowerPoint:

Poniższy przykład zmienia tytuł i czas ostatniego zapisu, a wynik zapisuje do nowego pliku:
const aspose = require("aspose.slides.via.java");
const java = require("java");
const sourceFile = "sample.pptx";
const outputFile = "sample_with_updated_properties.pptx";
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(sourceFile);
const documentProperties = presentationInfo.readDocumentProperties();
documentProperties.setTitle("Quarterly sales report");
documentProperties.setLastSavedTime(java.newInstanceSync("java.util.Date"));
presentationInfo.updateDocumentProperties(documentProperties);
const outputStream = java.newInstanceSync("java.io.FileOutputStream", outputFile);
try {
presentationInfo.writeBindedPresentation(outputStream);
} finally {
outputStream.close();
}
Poniższy obraz pokazuje zaktualizowane właściwości dokumentu:

Przydatne linki
W celu sprawdzenia powiązanych ustawień bezpieczeństwa i ochrony, zobacz następujące artykuły:
FAQ
Jak mogę sprawdzić, czy czcionki są osadzone i które to są?
Załaduj prezentację i użyj Presentation.getFontsManager. Wywołaj FontsManager.getEmbeddedFonts, aby uzyskać osadzone czcionki oraz FontsManager.getFonts, aby uzyskać czcionki używane w prezentacji. Porównaj dwa wyniki, aby znaleźć czcionki potrzebne do renderowania, które nie są osadzone.
Jak szybko sprawdzić, czy plik zawiera ukryte slajdy i ile ich jest?
Gdy zapisane metadane dokumentu są wystarczające, odczytaj DocumentProperties.getHiddenSlides za pomocą PresentationFactory.getPresentationInfo i PresentationInfo.readDocumentProperties. Jest to odpowiednie dla lekkiej inwentaryzacji. Jeśli prezentacja została zmodyfikowana w pamięci, zapisane metadane mogą być niekompletne lub nieaktualne, lub gdy konieczne jest zweryfikowanie bieżących wartości, przeiteruj Presentation.getSlides i sprawdź metodę Slide.getHidden każdego slajdu.
Czy mogę wykryć, czy używany jest niestandardowy rozmiar i orientacja slajdu oraz czy różnią się one od wartości domyślnych?
Tak. Załaduj prezentację i wywołaj Presentation.getSlideSize. Użyj SlideSize.getType, SlideSize.getSize, oraz SlideSize.getOrientation, aby porównać bieżące ustawienia z oczekiwanymi predefiniowanymi i wymiarami.
Czy istnieje szybki sposób, aby sprawdzić, czy wykresy odwołują się do zewnętrznych źródeł danych?
Tak. Znajdź każdy Chart i wywołaj ChartData.getDataSourceType. Dla zewnętrznego skoroszytu wywołaj ChartData.getExternalWorkbookPath. Typ źródła danych i ścieżka określają odwołanie zewnętrzne, lecz weryfikacja dostępności celu wymaga osobnego sprawdzenia zasobów.
Jak mogę ocenić „ciężkie” slajdy, które mogą spowolnić renderowanie lub eksport do PDF?
Nie istnieje pojedyncza właściwość określająca złożoność. Przeglądaj Presentation.getSlides oraz kolekcję BaseSlide.getShapes każdego slajdu. Używaj liczby kształtów oraz obecności dużych obrazów, efektów, animacji lub multimediów jako sygnałów kontrolnych oraz zmierz reprezentatywne renderowanie lub eksport przed uznaniem slajdu za potwierdzony wąskie gardło wydajności.