Formátování textu prezentace v .NET
Přehled
Tento článek ukazuje, jak formátovat text v prezentacích PowerPoint a OpenDocument pomocí Aspose.Slides pro .NET. Pokrývá barvy pozadí, průhlednost, mezery mezi znaky, vlastnosti písma, otáčení, mezery odstavců, chování automatického přizpůsobení, ukotvení textu, tabulátory a nastavení jazyka.
Pokud není uvedeno jinak, příklady používají sample.pptx. První tvar na první snímku je textové pole a jeho první odstavec obsahuje text zobrazený níže. Indexy snímků i tvarů jsou nulové. Příklady, které vybírají tučné části, používají efektivní formátování, včetně zděděného tučného formátování:

Pro vyhledání a zvýraznění doslovného textu nebo shod regulárních výrazů viz Vyhledávání a nahrazování textu.
Nastavení barvy pozadí textu
Použijte IParagraphFormat.DefaultPortionFormat k nastavení výchozí barvy zvýraznění pro odstavec nebo použijte IBasePortionFormat.HighlightColor pro jednotlivé textové úseky.
Následující příklad nastavuje světle šedé zvýraznění jako výchozí pro první odstavec. Výslovné barvy zvýraznění u jednotlivých úseků mají přednost před tímto výchozím nastavením:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Nastavte barvu zvýraznění pro celý odstavec.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
Výsledek:

Níže uvedený ukázkový kód demonstruje, jak nastavit barvu pozadí pro textové úseky s tučným písmem:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Nastavte barvu zvýraznění pro textový úsek.
portion.PortionFormat.HighlightColor.Color = Color.LightGray;
}
}
presentation.Save("gray_text_portions.pptx", SaveFormat.Pptx);
Výsledek:

Zarovnání odstavců textu
Použijte IParagraphFormat.Alignment aby se nastavil zarovnání odstavce v textovém rámci. Hodnota může být centrovaná, zarovnaná vlevo, vpravo, zarovnaná do bloku a podobně.
Následující ukázkový kód ukazuje, jak zarovnat odstavec do středu:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Nastavte zarovnání odstavce na střed.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
Výsledek:

Zarovnání písem v řádku
Použijte IParagraphFormat.FontAlignment abyste vertikálně zarovnali textové úseky s různými velikostmi písma v rámci řádku. Toto nastavení se vztahuje na celý odstavec a řídí zarovnání v každém jeho řádku.
Následující samostatný příklad vytvoří na jednom snímku čtyři popsaná textová pole. Každý odstavec obsahuje stejný text ve velikostech 18, 36 a 54 bodů s odlišným zarovnáním písma. Používá Arial, vypíná automatické přizpůsobení a zalomení řádku a udržuje textové rámečky dostatečně velké pro jediný řádek.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var alignments = new[] { FontAlignment.Baseline, FontAlignment.Top, FontAlignment.Center, FontAlignment.Bottom };
var fontSizes = new[] { 18f, 36f, 54f };
for (var i = 0; i < alignments.Length; i++)
{
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 30, 20 + i * 130, 660, 120);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.AnchoringType = TextAnchorType.Top;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.WrapText = NullableBool.False;
var label = textFrame.Paragraphs[0];
label.Text = alignments[i].ToString();
label.ParagraphFormat.Alignment = TextAlignment.Left;
label.ParagraphFormat.DefaultPortionFormat.FontHeight = 14;
label.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Arial");
label.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
label.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
var paragraph = new Paragraph();
paragraph.ParagraphFormat.FontAlignment = alignments[i];
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Arial");
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
foreach (var fontSize in fontSizes)
{
var portion = new Portion("Ag ");
portion.PortionFormat.FontHeight = fontSize;
paragraph.Portions.Add(portion);
}
textFrame.Paragraphs.Add(paragraph);
}
presentation.Save("font_alignment.pptx", SaveFormat.Pptx);
Výsledek:

Zarovnání písma používá metriky písma, takže viditelné okraje jednotlivých znaků se nemusí přesně shodovat. Příklad zahrnuje jak velké písmeno, tak i dolní úsek, aby ukázal rozdíl mezi zarovnáním na základní čáře a zarovnáním dole. Dostupnost písma a jeho náhrada, použité znaky a rozdíly ve velikostech písma ovlivňují výsledek. Rozměry rámu, okraje, řádkování, zalomení a automatické přizpůsobení také ovlivňují rozvržení; při porovnávání režimů používejte stejná písma a nastavení rozvržení.
Toto nastavení se liší od IParagraphFormat.Alignment, které řídí horizontální zarovnání odstavce, a od ITextFrameFormat.AnchoringType, který vertikálně umisťuje textový blok uvnitř jeho tvaru. Formátování horního a dolního indexu pomocí IBasePortionFormat.Escapement posouvá jednotlivé úseky vzhledem k základní čáře místo nastavení zarovnání písma pro řádky odstavce.
Nastavení průhlednosti textu
Průhlednost textu se řídí alfa komponentou barvy přiřazené k IBasePortionFormat.FillFormat. V níže uvedených příkladech je alpha = 50 hodnota alfa kanálu ARGB v rozsahu 0–255, nikoli procento průhlednosti.
Níže uvedený ukázkový kód ukazuje, jak použít průhlednost na celý odstavec:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var alpha = 50;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Nastavte poloprůhledné černé vyplnění pro text.
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
presentation.Save("transparent_paragraph.pptx", SaveFormat.Pptx);
Výsledek:

Následující ukázkový kód ukazuje, jak použít průhlednost na textové úseky s tučným písmem:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var alpha = 50;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Nastavte průhlednost textového úseku.
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
}
}
presentation.Save("transparent_text_portions.pptx", SaveFormat.Pptx);
Výsledek:

Nastavení mezery mezi znaky v textu
Použijte IBasePortionFormat.Spacing abyste rozšířili nebo zmenšili mezeru mezi znaky v textovém poli. Příklady přidávají 3 body mezery; záporné hodnoty text zmenšují.
Níže uvedený C# kód ukazuje, jak rozšířit mezeru mezi znaky v celém odstavci:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Poznámka: Použijte záporné hodnoty pro zmenšení mezery mezi znaky.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Rozšířit mezeru mezi znaky.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
Výsledek:

Níže uvedený ukázkový kód ukazuje, jak rozšířit mezeru mezi znaky v textových úsecích s tučným písmem:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Poznámka: Použijte záporné hodnoty pro zmenšení mezery mezi znaky.
portion.PortionFormat.Spacing = 3; // Rozšířit mezeru mezi znaky.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
Výsledek:

Zakázat kerning pro konkrétní písma
V některých případech může text vykreslený pomocí Aspose.Slides vypadat mírně těsněji než stejný text zobrazený v PowerPointu. K tomu může docházet, protože PowerPoint může ignorovat data kerningu pro určitá písma, i když písmo obsahuje platné informace o kerningu a kerning je v nastavení PowerPointu povolen.
Cílem přiblížit výstup renderování PowerPointu v takových případech můžete zakázat kerning pro textové úseky, které používají dotčené písmo. Nastavte IBasePortionFormat.KerningMinimalSize na hodnotu vyšší než skutečná velikost písma. Tento příklad vyžaduje soubor “presentation.pptx” s textovým polem jako prvním tvarem na první snímku. Kontroluje efektivní názvy písem, včetně zděděných, a nastaví práh 100 bodů pro úseky používající písmo Roboto. Tím se zakáže kerning pro odpovídající úseky s velikostí písma pod 100 bodů:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("presentation.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var targetFont = "Roboto";
foreach (var paragraph in autoShape.TextFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var textFormat = portion.PortionFormat.GetEffective();
var usesTargetFont = textFormat.LatinFont?.FontName == targetFont ||
textFormat.EastAsianFont?.FontName == targetFont ||
textFormat.ComplexScriptFont?.FontName == targetFont;
if (usesTargetFont)
{
portion.PortionFormat.KerningMinimalSize = 100;
}
}
}
presentation.Save("output.pptx", SaveFormat.Pptx);
Pro odpovídající text pod prahem toto nastavení zabraňuje kerningu a může pomoci sladit vykreslování Aspose.Slides s vizuálním výstupem PowerPointu u písem ovlivněných tímto specifickým chováním PowerPointu.
Správa vlastností písma textu
Vlastnosti písma lze nastavit na úrovni odstavce pomocí IParagraphFormat.DefaultPortionFormat nebo na jednotlivých úsecích pomocí IPortionFormat.
Následující příklad nastavuje výchozí písmo prvního odstavce na 12 bodů Times New Roman s tučným, kurzívním a tečkovaným podtržením. Výslovné formátování na jednotlivých úsecích má přednost před těmito výchozími nastaveními:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Nastavte vlastnosti písma pro odstavec.
var portionFormat = paragraph.ParagraphFormat.DefaultPortionFormat;
portionFormat.FontHeight = 12;
portionFormat.FontBold = NullableBool.True;
portionFormat.FontItalic = NullableBool.True;
portionFormat.FontUnderline = TextUnderlineType.Dotted;
portionFormat.LatinFont = new FontData("Times New Roman");
presentation.Save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
Výsledek:

Následující příklad aplikuje 13 bodů Times New Roman, kurzívu a tečkované podtržení na úseky, jejichž efektivní formátování je tučné:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Nastavte vlastnosti písma pro textový úsek.
portion.PortionFormat.FontHeight = 13;
portion.PortionFormat.FontItalic = NullableBool.True;
portion.PortionFormat.FontUnderline = TextUnderlineType.Dotted;
portion.PortionFormat.LatinFont = new FontData("Times New Roman");
}
}
presentation.Save("font_properties_for_text_portions.pptx", SaveFormat.Pptx);
Výsledek:

Řízení normalizace výšky textu
Použijte IBasePortionFormat.NormaliseHeight když reprodukujete typografii šablony nebo zkoumáte rozdíly ve výšce znaků. V PowerPointu aktivace normalizace roztahuje nebo zmenší jednotlivé znaky vertikálně tak, aby měly jednotnou viditelnou výšku v rámci textového úseku. Nenaručuje stejnou výšku textu mezi různými písmy.
Nastavte vlastnost na NullableBool.True or False , aby jste explicitně povolili nebo zakázali normalizaci. NullableBool.NotDefined ponechá lokální nastavení nevyplněné, takže úsek zdědí hodnotu, například z odstavce DefaultPortionFormat. To neznamená False. Použijte IPortionFormat.GetEffective a přečtěte IBasePortionFormatEffectiveData.NormaliseHeight pro získání vyřešené boolovské hodnoty.
Následující samostatný příklad vyžaduje Arial k instalaci. Vytváří dva textové bloky obsahující stejné velké písmena, malá písmena, dolní úseky a diakritiku ve velikosti 54 bodů. Oba odstavce mají výchozí zapnutou normalizaci. Horní úsek ji explicitně vypíná; dolní úsek ji zdědí. Velikosti rámců, okraje a mezery odstavců jsou identické, přičemž zalomení a autofit jsou vypnuty, aby porovnání bylo konzistentní. Příklad vypíše False: False a NotDefined: True, poté uloží “text_height_normalization.pptx”.
using System;
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var settings = new[] { NullableBool.False, NullableBool.NotDefined };
for (var i = 0; i < settings.Length; i++)
{
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 30, 60 + i * 200, 660, 150);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.Text = "Hxgjpq ÅÉ 0123";
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.WrapText = NullableBool.False;
textFrame.TextFrameFormat.AnchoringType = TextAnchorType.Top;
textFrame.TextFrameFormat.MarginTop = 0;
textFrame.TextFrameFormat.MarginLeft = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.SpaceBefore = 0;
paragraph.ParagraphFormat.SpaceAfter = 0;
paragraph.ParagraphFormat.SpaceWithin = 100;
paragraph.ParagraphFormat.DefaultPortionFormat.NormaliseHeight = NullableBool.True;
var portion = paragraph.Portions[0];
portion.PortionFormat.LatinFont = new FontData("Arial");
portion.PortionFormat.FontHeight = 54;
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
portion.PortionFormat.NormaliseHeight = settings[i];
Console.WriteLine($"{settings[i]}: {portion.PortionFormat.GetEffective().NormaliseHeight}");
}
presentation.Save("text_height_normalization.pptx", SaveFormat.Pptx);
Porovnání níže bylo exportováno ze uložené prezentace. Horní řádek má vypnutou normalizaci (False); dolní řádek zdědí zapnuté nastavení (NotDefined → True). Ujistěte se, že je Arial nainstalován, aby byl vzhled reprodukován.

Normalizace mění výšku znaků bez změny přiřazené FontHeight, která určuje velikost písma v bodech. Odstavec SpaceWithin řídí řádkování, zatímco textový rám AutofitType řídí, jak se text nebo jeho kontejner přizpůsobí. Tato nastavení slouží různým účelům a mohou nezávisle ovlivnit celkové rozvržení. Více o formátování odstavců a dědičnosti viz Manage Paragraph.
Použití a odstranění přeškrtnutí
Použijte IBasePortionFormat.StrikethroughType na textový úsek k zobrazení oprav, zrušených výrazů nebo předchozích cen, aniž byste mazali původní text. Nastavte jej na TextStrikethroughType.Single or Double pro jednu nebo dvě čáry přes text.
Pro odstranění přeškrtnutí přiřaďte TextStrikethroughType.None. Tím se efekt explicitně zakáže, i když okolní formátování určuje přeškrtnutí. Naproti tomu TextStrikethroughType.NotDefined ponechá lokální nastavení nedefinované, což umožní úseku zdědit formátování, například z odstavce. To nezaručuje, že přeškrtnutí bude odstraněno. Použijte IPortionFormat.GetEffective k načtení výsledného formátování, včetně zděděných hodnot.
Následující samostatný příklad vytváří tři srovnání cen. Každý odstavec má samostatné úseky pro popisek, předchozí cenu a aktuální cenu, takže je ovlivněna jen předchozí cena. První řádek aplikuje a poté odstraní přeškrtnutí; ostatní řádky zachovávají jednoduché a dvojité přeškrtnutí. Změnou této vlastnosti se zachová text a jeho další formátování, včetně tučné předchozí ceny.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 620, 220);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
shape.TextFrame.Paragraphs.Clear();
var labels = new[] { "None: ", "Single: ", "Double: " };
foreach (var label in labels)
{
var paragraph = new Paragraph();
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.SpaceAfter = 20;
var format = paragraph.ParagraphFormat.DefaultPortionFormat;
format.FontHeight = 28;
format.LatinFont = new FontData("Arial");
format.FillFormat.FillType = FillType.Solid;
format.FillFormat.SolidFillColor.Color = Color.Black;
paragraph.Portions.Add(new Portion(label));
var previousPrice = new Portion("$100");
previousPrice.PortionFormat.FontBold = NullableBool.True;
paragraph.Portions.Add(previousPrice);
paragraph.Portions.Add(new Portion(" → $80"));
shape.TextFrame.Paragraphs.Add(paragraph);
}
var paragraphs = shape.TextFrame.Paragraphs;
// Aplikujte přeškrtnutí a poté jej explicitně odeberte z první předchozí ceny.
paragraphs[0].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Single;
paragraphs[0].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.None;
paragraphs[1].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Single;
paragraphs[2].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Double;
presentation.Save("strikethrough.pptx", SaveFormat.Pptx);
Výsledek, shora dolů: bez přeškrtnutí, jednoduché přeškrtnutí a dvojité přeškrtnutí.

Nastavení rotace textu
Použijte ITextFrameFormat.TextVerticalType k nastavení předdefinované orientace textu uvnitř tvaru.
Následující ukázkový kód nastavuje orientaci textu ve tvaru na TextVerticalType.Vertical270, což otáčí text o 90 stupňů proti směru hodinových ručiček:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.TextVerticalType = TextVerticalType.Vertical270;
presentation.Save("text_rotation.pptx", SaveFormat.Pptx);
Výsledek:

Nastavení vlastní rotace pro textové rámečky
Použijte ITextFrameFormat.RotationAngle k nastavení vlastní úhlu rotace pro ITextFrame.
Níže uvedený ukázkový kód otáčí textový rám o 3 stupně po směru hodinových ručiček uvnitř tvaru:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.RotationAngle = 3;
presentation.Save("custom_text_rotation.pptx", SaveFormat.Pptx);
Výsledek:

Nastavení řádkování odstavců
Aspose.Slides poskytuje IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore a IParagraphFormat.SpaceWithin , aby řídily mezery odstavců. Tyto vlastnosti se používají následovně:
- Použijte kladnou hodnotu pro specifikaci řádkování jako procenta výšky řádku.
- Použijte zápornou hodnotu pro specifikaci řádkování v bodech.
Následující příklad nastavuje mezery v rámci prvního odstavce na 200 % výšky řádku (dvojité řádkování):
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.SpaceWithin = 200;
presentation.Save("line_spacing.pptx", SaveFormat.Pptx);
Výsledek:

Řízení zalamování řádků
Pravidla pro zalamování řádků odstavců jsou užitečná v úzkých textových blocích a prezentacích, které kombinují latinské a východoasijské texty. Následující vlastnosti patří do IParagraphFormat, takže se vztahují na celý odstavec:
- LatinLineBreak řídí pravidla zalamování řádků pro latinské texty. V mixovaném textu jeho změna může také změnit místo, kde se zalamuje sousední východoasijský text a interpunkce.
- EastAsianLineBreak řídí pravidla zalamování řádků pro východoasijské texty, včetně omezení znaků na začátku a konci řádku.
Tato pravidla nenahrazují ITextFrameFormat.WrapText, které umožňuje automatické zalomení v textovém rámci. Ovlivňují rozvržení při zalomení; nevkládají znak konce řádku. Explicitní konec řádku vynutí nový řádek v odstavci nezávisle na dostupné šířce.
Následující samostatný příklad vytváří úzký textový blok obsahující čínštinu a latinku. Explicitně nastaví obě vlastnosti zalamování řádků a uloží “line_breaking.pptx”. Pro experimentování s kterýmkoli pravidlem změňte hodnotu této vlastnosti a ponechte druhé nastavení beze změny. Příklad používá 24‑bodové Arial a SimSun s šířkou rámu 160 bodů a nulovými horizontálními okraji textového rámu. ITextFrameFormat.AutofitType je nastaven na TextAutofitType.None tak, aby velikost textu a rozměry rámu zůstaly pevné.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 160, 300);
shape.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.WrapText = NullableBool.True;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.MarginLeft = 0;
textFrame.TextFrameFormat.MarginRight = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.Text = "中文排版测试,PowerPoint 中文演示。";
var format = paragraph.ParagraphFormat;
format.Alignment = TextAlignment.Left;
format.DefaultPortionFormat.FontHeight = 24;
format.DefaultPortionFormat.LatinFont = new FontData("Arial");
format.DefaultPortionFormat.EastAsianFont = new FontData("SimSun");
format.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
format.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
format.LatinLineBreak = NullableBool.False;
format.EastAsianLineBreak = NullableBool.True;
presentation.Save("line_breaking.pptx", SaveFormat.Pptx);
Řízení visící interpunkce
IParagraphFormat.HangingPunctuation umožňuje oprávněné interpunkční znaky přesahovat pravý okraj řádku textu místo aby zabíraly další řádek. Používá se pro celý odstavec a liší se od visícího odsazení.
Následující samostatný příklad povoluje visící interpunkci v 100‑bodovém širokém textovém rámci a uloží “hanging_punctuation.pptx”. Při 24‑bodovém Arial a nulových horizontálních okrajích textového rámu zůstane poslední tečka po slově „sentence“ a přesáhne pravý okraj textu. Pro porovnání nastavte vlastnost na NullableBool.False: s tímto nastavením tečka zaujme samostatný řádek. Zalomení je zapnuté a autofit vypnutý, aby šířka zůstala pevná.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 100, 200);
shape.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.WrapText = NullableBool.True;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.MarginLeft = 0;
textFrame.TextFrameFormat.MarginRight = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.Text = "Simple text, next sentence.";
var format = paragraph.ParagraphFormat;
format.Alignment = TextAlignment.Left;
format.DefaultPortionFormat.FontHeight = 24;
format.DefaultPortionFormat.LatinFont = new FontData("Arial");
format.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
format.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
format.HangingPunctuation = NullableBool.True;
presentation.Save("hanging_punctuation.pptx", SaveFormat.Pptx);
Ne každá interpunkční značka může viset. Podmínky písma a rozvržení popsané výše se vztahují i na toto srovnání: změna písma, dostupné šířky, okrajů nebo nastavení autofitu může rozdíl odstranit.
Nastavení typu automatického přizpůsobení pro textové rámečky
ITextFrameFormat.AutofitType určuje, jak se text chová, když překročí hranice svého kontejneru. Použijte jej k řízení, zda se text zmenší, přeteče nebo automaticky změní velikost tvaru. Následující příklad konfiguruje tvar tak, aby se změnil velikostí podle textu a výsledek uloží do “autofit_type.pptx”.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.AutofitType = TextAutofitType.Shape;
presentation.Save("autofit_type.pptx", SaveFormat.Pptx);
Pro spočítání řádků po automatickém zalomení a zobrazení, jak změna šířky textu nebo tvaru výsledek ovlivní, viz Count Rendered Lines. Počet řádků sám o sobě neudává, zda text přeteče svůj kontejner.
Nastavení ukotvení textových rámečků
ITextFrameFormat.AnchoringType definuje, jak je text vertikálně umístěn uvnitř tvaru, například nahoře, uprostřed nebo dole. Následující příklad ukotví text na spodní část prvního tvaru a výsledek uloží do “text_anchor.pptx”.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.AnchoringType = TextAnchorType.Bottom;
presentation.Save("text_anchor.pptx", SaveFormat.Pptx);
Nastavení tabulace textu
Použijte IParagraphFormat.DefaultTabSize a IParagraphFormat.Tabs k nastavení tabulátorů v odstavci. Následující příklad nastaví výchozí interval tabulátoru na 100 bodů a přidá levý tabulátor na 30 bodů. Tato nastavení ovlivňují text obsahující znaky tabulátoru.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.DefaultTabSize = 100;
paragraph.ParagraphFormat.Tabs.Add(30, TabAlignment.Left);
presentation.Save("paragraph_tabs.pptx", SaveFormat.Pptx);
Výsledek:

Nastavení jazykové kontroly
Aspose.Slides poskytuje IBasePortionFormat.LanguageId, který umožňuje nastavit jazykovou kontrolu pro textový úsek. Jazyková kontrola určuje jazyk používaný pro kontrolu pravopisu a gramatiky v PowerPointu.
Následující příklad vyžaduje soubor “presentation.pptx” s textovým polem jako prvním tvarem na první snímku a alespoň jedním odstavcem. Nahrazuje obsah prvního odstavce za “1。”, nastaví SimSun jako písmo a přiřadí zjednodušenou čínštinu jako jazyk kontroly (zh-CN). Výsledek uloží do “proofing_language.pptx”:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("presentation.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.Portions.Clear();
var font = new FontData("SimSun");
var textPortion = new Portion();
textPortion.PortionFormat.ComplexScriptFont = font;
textPortion.PortionFormat.EastAsianFont = font;
textPortion.PortionFormat.LatinFont = font;
// Nastavte jazyk kontroly na zjednodušenou čínštinu.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
Nastavení výchozího jazyka
Použijte LoadOptions.DefaultTextLanguage k definování výchozího jazyka pro text vytvářený při načítání nebo tvorbě prezentace. Následující příklad vytvoří prezentaci s US English jako výchozím jazykem textu, přidá textové pole a vytiskne en-US pro jeho první textový úsek.
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using var presentation = new Presentation(loadOptions);
var slide = presentation.Slides[0];
// Přidejte nový obdélníkový tvar s textem.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Zkontrolujte jazyk první části.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
Nastavení výchozího textového stylu
Pro použití výchozího formátování textu na úrovni prezentace použijte IPresentation.DefaultTextStyle.
Následující příklad nastaví 14‑bodové tučné písmo jako výchozí pro odstavce nejvyšší úrovně v nové prezentaci a uloží ji do “default_text_style.pptx”. Text může tyto výchozí hodnoty zdědit, pokud není přepsán konkrétnějším formátováním.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// Získá formát odstavce nejvyšší úrovně.
var paragraphFormat = presentation.DefaultTextStyle.GetLevel(0);
if (paragraphFormat != null)
{
paragraphFormat.DefaultPortionFormat.FontHeight = 14;
paragraphFormat.DefaultPortionFormat.FontBold = NullableBool.True;
}
presentation.Save("default_text_style.pptx", SaveFormat.Pptx);
Extrahování textu s efektem VELKÝCH PÍSMEN
V PowerPointu aplikace efektu All Caps (Všechna velká písmena) zobrazí text na snímku velkými písmeny, i když byl původně zadán malými. Při získání takového úseku textu pomocí Aspose.Slides knihovna vrátí text přesně tak, jak byl zadán. Pro shodu s zobrazovaným textem zkontrolujte TextCapType a převedete vrácený řetězec na velká písmena, když je hodnota All.
Tento příklad vyžaduje soubor “sample2.pptx” s textovým polem jako prvním tvarem na první snímku. První úsek prvního odstavce obsahuje “Hello, Aspose!” s aplikovaným efektem All Caps, jak je ukázáno níže.

Níže uvedený ukázkový kód ukazuje, jak extrahovat text s aplikovaným All Caps efektem:
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample2.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var textPortion = autoShape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine($"Original text: {textPortion.Text}");
var textFormat = textPortion.PortionFormat.GetEffective();
if (textFormat.TextCapType == TextCapType.All)
{
var text = textPortion.Text.ToUpper();
Console.WriteLine($"All-Caps effect: {text}");
}
Výstup:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
Často kladené otázky
Jak mohu upravit text v tabulce na snímku?
Pro úpravu textu v tabulce na snímku použijte ITable. Procházejte buňky a aktualizujte každou buňku přes ICell.TextFrame a formátování odstavců přes IParagraph.ParagraphFormat.
Jak aplikovat gradientní barvu na text v PowerPoint snímku?
Pro aplikaci gradientní barvy na text použijte IBasePortionFormat.FillFormat. Nastavte IFillFormat.FillType na FillType.Gradient a nakonfigurujte zastávky gradientu, směr a průhlednost.