Accedi alle diapositive della presentazione in C++
Panoramica
Questo articolo spiega come accedere e gestire le diapositive in una presentazione utilizzando Aspose.Slides. Mostra come recuperare le diapositive tramite il loro indice a base zero dalla collezione di diapositive e come accedere a una diapositiva tramite il suo ID univoco utilizzando il metodo GetSlideById.
Imparerai anche come modificare la posizione di una diapositiva usando il metodo set_SlideNumber e come definire il numero della diapositiva iniziale per una presentazione con il metodo set_FirstSlideNumber. Gli esempi mostrano come caricare una presentazione, ottenere riferimenti alle diapositive, aggiornare l’ordine o la numerazione delle diapositive e salvare la presentazione modificata.
Accesso a una diapositiva per indice
Tutte le diapositive in una presentazione sono ordinate numericamente in base alla posizione della diapositiva a partire da 0. La prima diapositiva è accessibile tramite l’indice 0; la seconda diapositiva è accessibile tramite l’indice 1; ecc.
La classe Presentation, che rappresenta un file di presentazione, espone tutte le diapositive come una collezione ISlideCollection (collezione di oggetti ISlide). Questo codice C++ mostra come accedere a una diapositiva tramite il suo indice:
// Il percorso alla directory dei documenti.
const String templatePath = u"../templates/AddSlides.pptx";
// Istanzia la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Ottieni il riferimento di una diapositiva tramite il suo indice
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
Accesso a una diapositiva per ID
Ogni diapositiva in una presentazione ha un ID univoco associato. È possibile utilizzare il metodo GetSlideById() (esposto dalla classe Presentation) per puntare a quell’ID. Questo codice C++ mostra come fornire un ID diapositiva valido e accedere a quella diapositiva tramite il metodo GetSlideById():
// Il percorso alla directory dei documenti.
const String templatePath = u"../templates/AddSlides.pptx";
// Instanzia la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Ottiene l'ID di una diapositiva
int id = pres->get_Slides()->idx_get(0)->get_SlideId();
// Accede alla diapositiva tramite il suo ID
SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);
Modifica della posizione della diapositiva
Aspose.Slides consente di modificare la posizione di una diapositiva. Ad esempio, è possibile specificare che la prima diapositiva diventi la seconda diapositiva.
- Crea un’istanza della classe Presentation.
- Ottieni il riferimento della diapositiva (la cui posizione desideri modificare) tramite il suo indice
- Imposta una nuova posizione per la diapositiva tramite la proprietà set_SlideNumber().
- Salva la presentazione modificata.
Questo codice C++ dimostra un’operazione in cui la diapositiva in posizione 1 viene spostata in posizione 2:
// Il percorso alla directory dei documenti.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/ChangeSlidePosition.pptx";
// Istanzia la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Ottiene la diapositiva la cui posizione verrà modificata
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Imposta la nuova posizione per la diapositiva
slide->set_SlideNumber(2);
// Salva la presentazione modificata
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
La prima diapositiva è diventata la seconda; la seconda diapositiva è diventata la prima. Quando cambi la posizione di una diapositiva, le altre diapositive vengono automaticamente riordinate.
Imposta il numero della diapositiva
Utilizzando la proprietà set_FirstSlideNumber() (esposta dalla classe Presentation), è possibile specificare un nuovo numero per la prima diapositiva di una presentazione. Questa operazione fa sì che gli altri numeri delle diapositive vengano ricalcolati.
- Crea un’istanza della classe Presentation.
- Ottieni il numero della diapositiva.
- Imposta il numero della diapositiva.
- Salva la presentazione modificata.
Questo codice C++ dimostra un’operazione in cui il numero della prima diapositiva è impostato a 10:
// Il percorso alla directory dei documenti.
const String outPath = u"../out/SetSlideNumber_out.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
//Instanzia la classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Ottiene il numero della diapositiva
int firstSlideNumber = pres->get_FirstSlideNumber();
// Imposta il numero della diapositiva
pres->set_FirstSlideNumber(2);
// Salva la presentazione modificata
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Se preferisci omettere la prima diapositiva, puoi iniziare la numerazione dalla seconda diapositiva (e nascondere la numerazione per la prima diapositiva) in questo modo:
auto presentation = System::MakeObject<Presentation>();
auto layoutSlide = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);
auto slides = presentation->get_Slides();
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
// Sets the number for the first presentation slide
presentation->set_FirstSlideNumber(0);
// Shows slide numbers for all slides
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);
// Hides the slide number for the first slide
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);
// Saves the modified presentation
presentation->Save(u"output.pptx", SaveFormat::Pptx);
FAQ
Il numero della diapositiva visualizzato dall’utente corrisponde all’indice a base zero della collezione?
Il numero mostrato sulla diapositiva può iniziare da un valore arbitrario (ad esempio, 10) e non deve corrispondere all’indice; la relazione è controllata dall’impostazione first slide number della presentazione.
Le diapositive nascoste influenzano l’indicizzazione?
Sì. Una diapositiva nascosta rimane nella collezione ed è conteggiata nell’indicizzazione; “hidden” si riferisce alla visualizzazione, non alla sua posizione nella collezione.
L’indice di una diapositiva cambia quando vengono aggiunte o rimosse altre diapositive?
Sì. Gli indici riflettono sempre l’ordine corrente delle diapositive e vengono ricalcolati durante le operazioni di inserimento, eliminazione e spostamento.