Lavorare con stili e temi
La classe StyleCollection viene utilizzata per gestire le impostazioni integrate e applicare agli stili le impostazioni definite dall’utente.
Accesso agli stili
Puoi ottenere una raccolta di stili definiti nel documento utilizzando la proprietà Document.styles. Questa raccolta contiene sia gli stili incorporati che quelli definiti dall’utente in un documento. Uno stile particolare può essere ottenuto tramite il suo nome/alias, identificatore di stile o indice. Nell’esempio di codice seguente viene illustrato come ottenere l’accesso alla raccolta di stili definiti nel documento.
Come estrarre il contenuto in base agli stili
A livello semplice, recuperare il contenuto in base agli stili da un documento Word può essere utile per identificare, elencare e contare paragrafi e sequenze di testo formattate con uno stile specifico. Ad esempio, potrebbe essere necessario identificare particolari tipi di contenuto nel documento, come esempi, titoli, riferimenti, parole chiave, nomi di figure e casi di studio.
Per fare qualche passo ulteriore, questo può anche essere utilizzato per sfruttare la struttura del documento, definita dagli stili che utilizza, per riutilizzare il documento per un altro output, come HTML. Questo è infatti il modo in cui viene costruita la documentazione di Aspose, mettendo alla prova Aspose.Words. Uno strumento creato utilizzando Aspose.Words prende i documenti Word di origine e li suddivide in argomenti a determinati livelli di intestazione. Viene prodotto un file XML utilizzando Aspose.Words che viene utilizzato per costruire l’albero di navigazione che puoi vedere a sinistra. E poi Aspose.Words converte ogni argomento in HTML.
La soluzione per recuperare testo formattato con stili specifici in un documento Word è in genere economica e semplice utilizzando Aspose.Words.
La soluzione
Per illustrare con quanta facilità Aspose.Words gestisce il recupero dei contenuti in base agli stili, diamo un’occhiata a un esempio. In questo esempio, recupereremo il testo formattato con uno stile di paragrafo e uno stile di carattere specifici da un documento Word di esempio. Ad alto livello, ciò comporterà:
- Apertura di un documento Word utilizzando la classe Document.
- Ottenere raccolte di tutti i paragrafi e tutte le sequenze nel documento.
- Selezionando solo i paragrafi e le sequenze richieste. Nello specifico, recupereremo il testo formattato con lo stile di paragrafo “Intestazione 1” e lo stile di carattere “Enfasi intensa” da questo documento Word di esempio.
In questo documento di esempio, il testo formattato con lo stile di paragrafo “Intestazione 1” è “Inserisci scheda”, “Stili rapidi” e “Tema”, mentre il testo formattato con lo stile di carattere “Enfasi intensa” presenta diverse istanze di blu, testo in corsivo e in grassetto come “gallerie” e “aspetto generale”.
Il codice
L’implementazione di una query basata su stili è abbastanza semplice nel modello di oggetti del documento Aspose.Words, poiché utilizza semplicemente strumenti già presenti. Per questa soluzione sono implementati due metodi di classe:
- paragrafi_per_nome_stile – Questo metodo recupera un array di quei paragrafi nel documento che hanno un nome di stile specifico.
- corre_per_nome_stile: questo metodo recupera un array di quelle esecuzioni nel documento che hanno un nome di stile specifico. Entrambi questi metodi sono molto simili, le uniche differenze sono i tipi di nodo e la rappresentazione delle informazioni di stile all’interno del paragrafo e dei nodi di esecuzione. Ecco un’implementazione di
paragraphs_by_style_name
: nell’esempio seguente trovi tutti i paragrafi formattati con lo stile specificato.
Questa implementazione utilizza anche il metodo Document.get_child_nodes della classe Document, che restituisce una raccolta di tutti i nodi con il tipo specificato, che in questo caso in tutti i paragrafi.
Si noti che il secondo parametro del metodo Document.get_child_nodes è impostato su True
. Ciò impone al metodo Document.get_child_nodes di selezionare ricorsivamente da tutti i nodi figlio, anziché selezionare solo i nodi figli immediati.
Vale anche la pena sottolineare che la raccolta paragrafi non crea un sovraccarico immediato poiché i paragrafi vengono caricati in questa raccolta solo quando si accede agli elementi al loro interno. Quindi, tutto ciò che devi fare è esaminare la raccolta, utilizzando l’operatore foreach standard e aggiungere i paragrafi con lo stile specificato all’array paragrafi_con_stile. Il nome dello stile Paragraph
si trova nella proprietà Style.name dell’oggetto Paragraph.paragraph_format. L’implementazione di corre_per_nome_stile è quasi la stessa, anche se ovviamente utilizziamo NodeType.RUN per recuperare i nodi di esecuzione. La proprietà Font.style di un oggetto Run viene utilizzata per accedere alle informazioni sullo stile nei nodi Run. Nell’esempio seguente trovi tutte le esecuzioni formattate con lo stile specificato.
Quando entrambe le query vengono implementate, tutto ciò che devi fare è passare un oggetto documento e specificare i nomi di stile del contenuto che desideri recuperare: nell’esempio seguente esegui query e visualizza i risultati. È possibile scaricare il file modello di questo esempio da Qui.
Risultato finale
Al termine, l’esecuzione dell’esempio visualizzerà il seguente output:
Come puoi vedere, questo è un esempio molto semplice, che mostra il numero e il testo dei paragrafi raccolti e delle sequenze nel documento Word di esempio.
Copia tutti gli stili dal modello
Ci sono casi in cui desideri copiare tutti gli stili da un documento a un altro. È possibile utilizzare il metodo Document.copy_styles_from_template per copiare gli stili dal modello specificato a un documento. Quando gli stili vengono copiati da un modello a un documento, gli stili con nomi simili nel documento vengono ridefiniti per corrispondere alle descrizioni di stile nel modello. Gli stili univoci del modello vengono copiati nel documento. Gli stili univoci nel documento rimangono intatti. L’esempio di Below code mostra come copiare gli stili da un documento all’altro.
Come manipolare le proprietà del tema
Abbiamo aggiunto API di base in Aspose.Words per accedere alle proprietà del tema del documento. Per ora, questo API include i seguenti oggetti pubblici:
Ecco come puoi ottenere le proprietà del tema:
Ed ecco come puoi impostare le proprietà del tema: