Formattare il testo della presentazione in JavaScript
Panoramica
Questo articolo mostra come formattare il testo in presentazioni PowerPoint e OpenDocument utilizzando Aspose.Slides per Node.js tramite Java. Copre colori di sfondo, trasparenza, spaziatura dei caratteri, proprietà del carattere, rotazione, spaziatura dei paragrafi, comportamento di autofit, ancoraggio del testo, tabulazioni e impostazioni della lingua.
Salvo diversamente indicato, gli esempi utilizzano sample.pptx. La prima forma nella sua prima diapositiva è una casella di testo e il suo primo paragrafo contiene il testo mostrato di seguito. Sia gli indici delle diapositive sia quelli delle forme partono da zero. Gli esempi che selezionano parti in grassetto usano la formattazione effettiva, inclusa la formattazione in grassetto ereditata:

Per trovare e evidenziare testo letterale o corrispondenze di espressioni regolari, vedere Cerca e sostituisci testo.
Imposta colore di sfondo del testo
Usa ParagraphFormat.getDefaultPortionFormat per impostare il colore di evidenziazione predefinito per un paragrafo, oppure usa BasePortionFormat.getHighlightColor per porzioni di testo individuali.
L’esempio seguente imposta un’evidenziazione grigio chiaro come predefinita per il primo paragrafo. I colori di evidenziazione espliciti sulle singole porzioni hanno precedenza su questa impostazione predefinita:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Imposta il colore di evidenziazione per l'intero paragrafo.
paragraph.getParagraphFormat().getDefaultPortionFormat().getHighlightColor().setColor(java.getStaticFieldValue("java.awt.Color", "LIGHT_GRAY"));
presentation.save("gray_paragraph.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

L’esempio di codice seguente dimostra come impostare il colore di sfondo per porzioni di testo con un carattere in grassetto:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Imposta il colore di evidenziazione per la porzione di testo.
portion.getPortionFormat().getHighlightColor().setColor(java.getStaticFieldValue("java.awt.Color", "LIGHT_GRAY"));
}
}
presentation.save("gray_text_portions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Allinea paragrafi di testo
Usa ParagraphFormat.setAlignment per impostare l’allineamento del paragrafo all’interno di una casella di testo. Il valore può essere centrato, allineato a sinistra, allineato a destra, giustificato, ecc.
L’esempio di codice seguente mostra come allineare il paragrafo al centro:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Imposta l'allineamento del paragrafo al centro.
paragraph.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Center);
presentation.save("aligned_paragraph.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Allinea i caratteri all’interno di una riga
Usa ParagraphFormat.setFontAlignment per allineare verticalmente le porzioni di testo con dimensioni di carattere diverse all’interno di una riga. Questa impostazione si applica a tutto il paragrafo e controlla l’allineamento all’interno di ciascuna delle sue righe.
L’esempio autonomo seguente crea quattro caselle di testo etichettate su una singola diapositiva. Ogni paragrafo contiene lo stesso testo a 18, 36 e 54 punti, con un diverso allineamento del carattere. Usa Arial, disabilita autofit e interruzione automatica, e mantiene le caselle di testo sufficientemente larghe per una sola riga.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const alignments = [aspose.slides.FontAlignment.Baseline, aspose.slides.FontAlignment.Top, aspose.slides.FontAlignment.Center, aspose.slides.FontAlignment.Bottom];
const alignmentNames = ["Baseline", "Top", "Center", "Bottom"];
const fontSizes = [18, 36, 54];
for (let i = 0; i < alignments.length; i++) {
const shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 30, 20 + i * 130, 660, 120);
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
shape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
const textFrame = shape.getTextFrame();
textFrame.getTextFrameFormat().setAnchoringType(java.newByte(aspose.slides.TextAnchorType.Top));
textFrame.getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.None));
textFrame.getTextFrameFormat().setWrapText(java.newByte(aspose.slides.NullableBool.False));
const label = textFrame.getParagraphs().get_Item(0);
label.setText(alignmentNames[i]);
label.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Left);
label.getParagraphFormat().getDefaultPortionFormat().setFontHeight(14);
label.getParagraphFormat().getDefaultPortionFormat().setLatinFont(new aspose.slides.FontData("Arial"));
label.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
label.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "GRAY"));
const paragraph = new aspose.slides.Paragraph();
paragraph.getParagraphFormat().setFontAlignment(alignments[i]);
paragraph.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Left);
paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(new aspose.slides.FontData("Arial"));
paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
for (const fontSize of fontSizes) {
const portion = new aspose.slides.Portion("Ag ");
portion.getPortionFormat().setFontHeight(fontSize);
paragraph.getPortions().add(portion);
}
textFrame.getParagraphs().add(paragraph);
}
presentation.save("font_alignment.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

L’allineamento del carattere utilizza le metriche del carattere, quindi i bordi visibili delle singole lettere non coincidono necessariamente esattamente. L’esempio include sia una lettera maiuscola sia un discendente per evidenziare la differenza tra allineamento di base e allineamento in basso. La disponibilità del carattere e la sostituzione, i caratteri usati e la differenza nelle dimensioni dei caratteri influiscono sul risultato. Le dimensioni del riquadro, i margini, l’interlinea, l’interruzione automatica e l’autofit influenzano anche il layout; usa gli stessi caratteri e impostazioni di layout quando confronti le modalità.
Questa impostazione differisce da ParagraphFormat.setAlignment, che controlla l’allineamento orizzontale del paragrafo, e da TextFrameFormat.setAnchoringType, che posiziona il blocco di testo verticalmente all’interno della sua forma. La formattazione in apice e pedice tramite BasePortionFormat.setEscapement sposta le singole porzioni rispetto alla linea di base invece di impostare l’allineamento del carattere per le linee del paragrafo.
Imposta trasparenza per il testo
La trasparenza del testo è controllata tramite la componente alfa del colore assegnato a BasePortionFormat.getFillFormat. Negli esempi seguenti, alpha = 50 è un valore alfa ARGB nella scala 0–255, non una percentuale di trasparenza.
L’esempio di codice seguente mostra come applicare la trasparenza al intero paragrafo:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const alpha = 50;
const transparentBlack = java.newInstanceSync("java.awt.Color", 0, 0, 0, alpha);
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const fillFormat = paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat();
// Imposta il colore di riempimento del testo al colore trasparente.
fillFormat.setFillType(java.newByte(aspose.slides.FillType.Solid));
fillFormat.getSolidFillColor().setColor(transparentBlack);
presentation.save("transparent_paragraph.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

L’esempio di codice seguente mostra come applicare la trasparenza a porzioni di testo con un carattere in grassetto:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const alpha = 50;
const transparentBlack = java.newInstanceSync("java.awt.Color", 0, 0, 0, alpha);
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
if (portion.getPortionFormat().getEffective().getFontBold()) {
const fillFormat = portion.getPortionFormat().getFillFormat();
// Imposta la trasparenza della porzione di testo.
fillFormat.setFillType(java.newByte(aspose.slides.FillType.Solid));
fillFormat.getSolidFillColor().setColor(transparentBlack);
}
}
presentation.save("transparent_text_portions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Imposta spaziatura dei caratteri per il testo
Usa BasePortionFormat.setSpacing per espandere o comprimere la spaziatura tra i caratteri in una casella di testo. Gli esempi aggiungono 3 punti di spaziatura; i valori negativi comprimono il testo.
Il seguente codice JavaScript mostra come espandere la spaziatura dei caratteri nel intero paragrafo:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Nota: usa valori negativi per comprimere la spaziatura dei caratteri.
paragraph.getParagraphFormat().getDefaultPortionFormat().setSpacing(3); // Espandi la spaziatura dei caratteri.
presentation.save("character_spacing_in_paragraph.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

L’esempio di codice seguente mostra come espandere la spaziatura dei caratteri in porzioni di testo con un carattere in grassetto:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Nota: usa valori negativi per comprimere la spaziatura dei caratteri.
portion.getPortionFormat().setSpacing(3); // Espandi la spaziatura dei caratteri.
}
}
presentation.save("character_spacing_in_text_portions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Disabilita il kerning per caratteri specifici
In alcuni casi, il testo renderizzato da Aspose.Slides può apparire leggermente più stretto rispetto allo stesso testo visualizzato in PowerPoint. Ciò può accadere perché PowerPoint può ignorare i dati di kerning per determinati caratteri, anche quando il carattere contiene informazioni di kerning valide e il kerning è abilitato nelle impostazioni di PowerPoint.
Per avvicinare l’output renderizzato a quello di PowerPoint in tali casi, è possibile disabilitare il kerning per le porzioni di testo che utilizzano il carattere interessato. Imposta BasePortionFormat.setKerningMinimalSize a un valore superiore alla dimensione reale del carattere. Questo esempio richiede “presentation.pptx” con una casella di testo come prima forma sulla prima diapositiva. Controlla i nomi dei caratteri effettivi, inclusi i caratteri ereditati, e imposta una soglia di 100 punti per le porzioni che utilizzano Roboto. Questo disabilita il kerning per le porzioni corrispondenti con dimensione del carattere inferiore a 100 punti:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraphs = autoShape.getTextFrame().getParagraphs();
const paragraphCount = paragraphs.getCount();
const targetFont = "Roboto";
for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
const portions = paragraphs.get_Item(paragraphIndex).getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
const portionFormat = portion.getPortionFormat().getEffective();
const latinFont = portionFormat.getLatinFont();
const eastAsianFont = portionFormat.getEastAsianFont();
const complexScriptFont = portionFormat.getComplexScriptFont();
if ((latinFont !== null && latinFont.getFontName() === targetFont) ||
(eastAsianFont !== null && eastAsianFont.getFontName() === targetFont) ||
(complexScriptFont !== null && complexScriptFont.getFontName() === targetFont)) {
portion.getPortionFormat().setKerningMinimalSize(100);
}
}
}
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Per il testo corrispondente al di sotto della soglia, questa impostazione impedisce il kerning e può aiutare ad allineare il rendering di Aspose.Slides a quello visivo di PowerPoint per i caratteri interessati da questo comportamento specifico di PowerPoint.
Gestisci le proprietà del carattere del testo
Le proprietà del carattere possono essere impostate a livello di paragrafo tramite ParagraphFormat.getDefaultPortionFormat o su singole porzioni tramite PortionFormat.
L’esempio seguente imposta il carattere predefinito del primo paragrafo a Times New Roman 12 punti con grassetto, corsivo e sottolineatura a punti. La formattazione esplicita su singole porzioni ha precedenza su questi valori predefiniti.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const defaultPortionFormat = paragraph.getParagraphFormat().getDefaultPortionFormat();
// Imposta le proprietà del carattere per il paragrafo.
defaultPortionFormat.setFontHeight(12);
defaultPortionFormat.setFontBold(java.newByte(aspose.slides.NullableBool.True));
defaultPortionFormat.setFontItalic(java.newByte(aspose.slides.NullableBool.True));
defaultPortionFormat.setFontUnderline(java.newByte(aspose.slides.TextUnderlineType.Dotted));
defaultPortionFormat.setLatinFont(new aspose.slides.FontData("Times New Roman"));
presentation.save("font_properties_for_paragraph.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

L’esempio seguente applica Times New Roman 13 punti, formattazione corsiva e sottolineatura a punti alle porzioni la cui formattazione effettiva è in grassetto:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
const portions = paragraph.getPortions();
const portionCount = portions.getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = portions.get_Item(portionIndex);
if (portion.getPortionFormat().getEffective().getFontBold()) {
const portionFormat = portion.getPortionFormat();
// Imposta le proprietà del carattere per la porzione di testo.
portionFormat.setFontHeight(13);
portionFormat.setFontItalic(java.newByte(aspose.slides.NullableBool.True));
portionFormat.setFontUnderline(java.newByte(aspose.slides.TextUnderlineType.Dotted));
portionFormat.setLatinFont(new aspose.slides.FontData("Times New Roman"));
}
}
presentation.save("font_properties_for_text_portions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Imposta rotazione del testo
Usa TextFrameFormat.setTextVerticalType per impostare un’orientazione predefinita del testo all’interno di una forma.
L’esempio di codice seguente imposta l’orientazione del testo nella forma su TextVerticalType.Vertical270, che ruota il testo di 90 gradi in senso antiorario:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setTextVerticalType(java.newByte(aspose.slides.TextVerticalType.Vertical270));
presentation.save("text_rotation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Imposta rotazione personalizzata per i riquadri di testo
Usa TextFrameFormat.setRotationAngle per impostare un angolo di rotazione personalizzato per un TextFrame.
L’esempio di codice seguente ruota il riquadro di testo di 3 gradi in senso orario all’interno della forma:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setRotationAngle(3);
presentation.save("custom_text_rotation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Imposta spaziatura interlinea dei paragrafi
Aspose.Slides fornisce ParagraphFormat.setSpaceAfter, ParagraphFormat.setSpaceBefore e ParagraphFormat.setSpaceWithin per controllare la spaziatura dei paragrafi. Queste proprietà sono usate come segue:
- Usa un valore positivo per specificare la spaziatura della riga come percentuale dell’altezza della riga.
- Usa un valore negativo per specificare la spaziatura della riga in punti.
L’esempio seguente imposta la spaziatura interna del primo paragrafo al 200 % dell’altezza della riga (doppio interlinea):
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getParagraphFormat().setSpaceWithin(200);
presentation.save("line_spacing.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Controlla l’interruzione di linea
Le regole di interruzione di linea dei paragrafi sono utili in blocchi di testo stretti e presentazioni che mescolano testo latino e orientale. I seguenti metodi appartengono a ParagraphFormat, quindi si applicano a un intero paragrafo:
- setLatinLineBreak controlla le regole di interruzione di linea latino. In testo misto, modificarlo può anche cambiare dove il testo orientale e la punteggiatura adiacenti vanno a capo.
- setEastAsianLineBreak controlla le regole di interruzione di linea orientale, incluse le restrizioni sui caratteri all’inizio e alla fine di una riga.
Queste regole non sostituiscono TextFrameFormat.setWrapText, che abilita l’interruzione automatica all’interno di un riquadro di testo. Influenzano il layout quando avviene il wrap; non inseriscono caratteri di interruzione di linea. Un’interruzione di linea esplicita fornisce una nuova riga all’interno del paragrafo indipendentemente dalla larghezza disponibile.
L’esempio autonomo seguente crea un blocco di testo stretto contenente cinese e latino. Imposta entrambe le opzioni di interruzione di linea in modo esplicito e salva “line_breaking.pptx”. Per sperimentare con una delle regole, modifica il valore corrispondente mantenendo le altre impostazioni fisse. L’esempio utilizza Arial 24 pt e SimSun con una larghezza del riquadro di 160 pt e margini orizzontali del riquadro pari a zero. TextFrameFormat.setAutofitType è chiamato con TextAutofitType.None in modo che le dimensioni del testo e del riquadro rimangano fisse.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 160, 300);
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
const textFrame = shape.getTextFrame();
textFrame.getTextFrameFormat().setWrapText(java.newByte(aspose.slides.NullableBool.True));
textFrame.getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.None));
textFrame.getTextFrameFormat().setMarginLeft(0);
textFrame.getTextFrameFormat().setMarginRight(0);
const paragraph = textFrame.getParagraphs().get_Item(0);
paragraph.setText("中文排版测试,PowerPoint 中文演示。");
const format = paragraph.getParagraphFormat();
format.setAlignment(aspose.slides.TextAlignment.Left);
format.getDefaultPortionFormat().setFontHeight(24);
const latinFont = new aspose.slides.FontData("Arial");
format.getDefaultPortionFormat().setLatinFont(latinFont);
const eastAsianFont = new aspose.slides.FontData("SimSun");
format.getDefaultPortionFormat().setEastAsianFont(eastAsianFont);
format.getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
const textColor = java.getStaticFieldValue("java.awt.Color", "BLACK");
format.getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(textColor);
format.setLatinLineBreak(java.newByte(aspose.slides.NullableBool.False));
format.setEastAsianLineBreak(java.newByte(aspose.slides.NullableBool.True));
presentation.save("line_breaking.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Controlla la punteggiatura sospesa
ParagraphFormat.setHangingPunctuation consente alla punteggiatura idonea di estendersi oltre il margine destro della linea di testo invece di occupare la riga successiva. Si applica all’intero paragrafo ed è diversa da un rientro sospeso.
L’esempio autonomo seguente abilita la punteggiatura sospesa in un riquadro di testo largo 100 pt e salva “hanging_punctuation.pptx”. Con Arial 24 pt e margini orizzontali del riquadro pari a zero, il punto finale rimane dopo “sentence” e si estende oltre il bordo destro del testo. Imposta la proprietà su NullableBool.False per confrontare: con queste impostazioni, il punto occupa una riga separata. Il wrap è abilitato e l’autofit è disabilitato per mantenere la larghezza disponibile fissa.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 100, 200);
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
const textFrame = shape.getTextFrame();
textFrame.getTextFrameFormat().setWrapText(java.newByte(aspose.slides.NullableBool.True));
textFrame.getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.None));
textFrame.getTextFrameFormat().setMarginLeft(0);
textFrame.getTextFrameFormat().setMarginRight(0);
const paragraph = textFrame.getParagraphs().get_Item(0);
paragraph.setText("Simple text, next sentence.");
const format = paragraph.getParagraphFormat();
format.setAlignment(aspose.slides.TextAlignment.Left);
format.getDefaultPortionFormat().setFontHeight(24);
const latinFont = new aspose.slides.FontData("Arial");
format.getDefaultPortionFormat().setLatinFont(latinFont);
format.getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
const textColor = java.getStaticFieldValue("java.awt.Color", "BLACK");
format.getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(textColor);
format.setHangingPunctuation(java.newByte(aspose.slides.NullableBool.True));
presentation.save("hanging_punctuation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Non tutte le punteggiature possono sospendersi. Le condizioni di carattere e layout descritte sopra si applicano anche a questo confronto: cambiare il carattere, la larghezza disponibile, i margini o le impostazioni di autofit può eliminare la differenza visibile.
Imposta il tipo di Autofit per i riquadri di testo
TextFrameFormat.setAutofitType determina come il testo si comporta quando supera i limiti del suo contenitore. Usalo per controllare se il testo si riduce, trabocca o ridimensiona automaticamente la forma. L’esempio seguente configura la forma per ridimensionarsi per adattarsi al testo e salva il risultato in “autofit_type.pptx”.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.Shape));
presentation.save("autofit_type.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Per contare le righe dopo il wrap automatico e vedere come la larghezza del testo o della forma cambia il risultato, vedere Conta le righe renderizzate. Il conteggio delle righe da solo non indica se il testo trabocca dal contenitore.
Imposta l’ancora dei riquadri di testo
TextFrameFormat.setAnchoringType definisce come il testo è posizionato verticalmente all’interno di una forma, ad esempio in alto, al centro o in basso. L’esempio seguente ancora il testo al fondo della prima forma e salva il risultato in “text_anchor.pptx”.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAnchoringType(java.newByte(aspose.slides.TextAnchorType.Bottom));
presentation.save("text_anchor.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Imposta la tabulazione del testo
Usa ParagraphFormat.setDefaultTabSize e ParagraphFormat.getTabs per configurare le tabulazioni in un paragrafo. L’esempio seguente imposta l’intervallo di tabulazione predefinito a 100 pt e aggiunge una tabulazione allineata a sinistra a 30 pt. Queste impostazioni influiscono sul testo contenente caratteri di tabulazione.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getParagraphFormat().setDefaultTabSize(100);
paragraph.getParagraphFormat().getTabs().add(30, java.newByte(aspose.slides.TabAlignment.Left));
presentation.save("paragraph_tabs.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Il risultato:

Imposta lingua di correzione
Aspose.Slides fornisce BasePortionFormat.setLanguageId, che consente di impostare la lingua di correzione per una porzione di testo. La lingua di correzione determina la lingua usata per i controlli ortografici e grammaticali in PowerPoint.
L’esempio seguente richiede “presentation.pptx” con una casella di testo come prima forma sulla prima diapositiva e almeno un paragrafo. Sostituisce il contenuto del primo paragrafo con “1。”, imposta SimSun come carattere e assegna la lingua di correzione Cinese semplificato (zh-CN). Salva il risultato in “proofing_language.pptx”:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getPortions().clear();
const font = new aspose.slides.FontData("SimSun");
const textPortion = new aspose.slides.Portion();
textPortion.getPortionFormat().setComplexScriptFont(font);
textPortion.getPortionFormat().setEastAsianFont(font);
textPortion.getPortionFormat().setLatinFont(font);
// Imposta l'Id della lingua di correzione.
textPortion.getPortionFormat().setLanguageId("zh-CN");
textPortion.setText("1。");
paragraph.getPortions().add(textPortion);
presentation.save("proofing_language.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Imposta lingua predefinita
Usa LoadOptions.setDefaultTextLanguage per definire la lingua predefinita per il testo creato durante il caricamento o la creazione di una presentazione. L’esempio seguente crea una presentazione con l’inglese americano come lingua predefinita del testo, aggiunge una casella di testo e stampa en-US per la sua prima porzione di testo.
const aspose = { slides: require("aspose.slides.via.java") };
const loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");
const presentation = new aspose.slides.Presentation(loadOptions);
try {
const slide = presentation.getSlides().get_Item(0);
// Aggiungi una nuova forma rettangolare con testo.
const shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 20, 20, 150, 50);
shape.getTextFrame().setText("Sample text");
// Verifica la lingua della prima porzione.
const portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
console.log(portion.getPortionFormat().getLanguageId());
} finally {
presentation.dispose();
}
Imposta stile di testo predefinito
Per applicare la formattazione di testo predefinita a livello di presentazione, usa Presentation.getDefaultTextStyle.
L’esempio seguente imposta un carattere in grassetto da 14 pt come predefinito per i paragrafi di livello superiore in una nuova presentazione e lo salva in “default_text_style.pptx”. Il testo può ereditare questi valori predefiniti a meno che una formattazione più specifica non li sovrascriva.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
// Ottieni il formato del paragrafo di livello superiore.
const paragraphFormat = presentation.getDefaultTextStyle().getLevel(0);
if (paragraphFormat !== null) {
paragraphFormat.getDefaultPortionFormat().setFontHeight(14);
paragraphFormat.getDefaultPortionFormat().setFontBold(java.newByte(aspose.slides.NullableBool.True));
}
presentation.save("default_text_style.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Estrai testo con l’effetto tutto maiuscolo
In PowerPoint, l’applicazione dell’effetto All Caps al carattere fa apparire il testo in maiuscolo nella diapositiva anche se è stato originariamente digitato in minuscolo. Quando recuperi una tale porzione di testo con Aspose.Slides, la libreria restituisce il testo esattamente come è stato inserito. Per corrispondere al testo visualizzato, controlla TextCapType e converti la stringa restituita in maiuscolo quando il valore è All.
Questo esempio richiede “sample2.pptx” con una casella di testo come prima forma sulla prima diapositiva. Il primo paragrafo contiene la prima porzione “Hello, Aspose!” con l’effetto All Caps applicato, come mostrato di seguito.

L’esempio di codice seguente mostra come estrarre il testo con l’effetto All Caps applicato:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("sample2.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const autoShape = slide.getShapes().get_Item(0);
const textPortion = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
console.log("Original text: " + textPortion.getText());
const textFormat = textPortion.getPortionFormat().getEffective();
if (textFormat.getTextCapType() === aspose.slides.TextCapType.All) {
const text = textPortion.getText().toUpperCase();
console.log("All-Caps effect: " + text);
}
} finally {
presentation.dispose();
}
Output:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Come modificare il testo in una tabella su una diapositiva?
Per modificare il testo in una tabella su una diapositiva, usa Table. Itera attraverso le celle e aggiorna ogni cella tramite Cell.getTextFrame e la formattazione del paragrafo tramite Paragraph.getParagraphFormat.
Come applicare un colore sfumato al testo su una diapositiva PowerPoint?
Per applicare un colore sfumato al testo, usa BasePortionFormat.getFillFormat. Imposta FillFormat.setFillType su FillType.Gradient e configura i punti di gradiente, direzione e trasparenza.