Formátování textu v prezentaci v PHP
Přehled
Tento článek ukazuje, jak formátovat text v prezentacích PowerPoint a OpenDocument pomocí Aspose.Slides pro PHP přes Java. Pokrývá barvy pozadí, průhlednost, mezery mezi znaky, vlastnosti písma, otáčení, mezery mezi odstavci, chování automatického přizpůsobení, ukotvení textu, zarážky tabulátorů 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 níže zobrazený text. 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 nalezení a zvýraznění doslovného textu nebo shod regulárních výrazů viz Hledat a nahradit text.
Nastavit barvu pozadí textu
Použijte ParagraphFormat::getDefaultPortionFormat k nastavení výchozí barvy zvýraznění pro odstavec, nebo použijte BasePortionFormat::getHighlightColor pro jednotlivé části textu.
Následující příklad nastaví světle šedé zvýraznění jako výchozí pro první odstavec. Výslovné barvy zvýraznění na jednotlivých částech mají přednost před tímto výchozím nastavením:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$highlightColor = java("java.awt.Color")->LIGHT_GRAY;
// Nastavte barvu zvýraznění pro celý odstavec.
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->getHighlightColor()->setColor($highlightColor);
$presentation->save("gray_paragraph.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Níže uvedený ukázkový kód demonstruje, jak nastavit barvu pozadí částí textu s tučným písmem:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$highlightColor = java("java.awt.Color")->LIGHT_GRAY;
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
if (java_values($portion->getPortionFormat()->getEffective()->getFontBold())) {
// Nastavte barvu zvýraznění pro část textu.
$portion->getPortionFormat()->getHighlightColor()->setColor($highlightColor);
}
}
$presentation->save("gray_text_portions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Zarovnat odstavce textu
Použijte ParagraphFormat::setAlignment k nastavení zarovnání odstavce v textovém rámečku. Hodnota může být centrovaná, zarovnaná vlevo, vpravo, do bloku a podobně.
Následující ukázkový kód ukazuje, jak zarovnat odstavec na střed:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextAlignment;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
// Nastavte zarovnání odstavce na střed.
$paragraph->getParagraphFormat()->setAlignment(TextAlignment::Center);
$presentation->save("aligned_paragraph.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Zarovnat písma v řádku
Použijte ParagraphFormat::setFontAlignment k vertikálnímu zarovnání částí textu s různými velikostmi písma v rámci řádku. Toto nastavení platí pro celý odstavec a řídí zarovnání v každém z jeho řádků.
Následující samostatný příklad vytvoří čtyři označená textová pole na jednom snímku. Každý odstavec obsahuje stejný text ve velikostech 18, 36 a 54 bodů s různým zarovnáním písma. Používá Arial, zakazuje automatické přizpůsobení a zalamování a udržuje textové rámečky dostatečně velké pro jeden řádek.
use aspose\slides\FillType;
use aspose\slides\FontAlignment;
use aspose\slides\FontData;
use aspose\slides\NullableBool;
use aspose\slides\Paragraph;
use aspose\slides\Portion;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TextAlignment;
use aspose\slides\TextAnchorType;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$alignments = [FontAlignment::Baseline, FontAlignment::Top, FontAlignment::Center, FontAlignment::Bottom];
$alignmentNames = ["Baseline", "Top", "Center", "Bottom"];
$fontSizes = [18, 36, 54];
$font = new FontData("Arial");
$gray = java("java.awt.Color")->GRAY;
$black = java("java.awt.Color")->BLACK;
for ($i = 0; $i < count($alignments); $i++) {
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 30, 20 + $i * 130, 660, 120);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getLineFormat()->getFillFormat()->setFillType(FillType::NoFill);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setAnchoringType(TextAnchorType::Top);
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::None);
$textFrame->getTextFrameFormat()->setWrapText(NullableBool::False);
$label = $textFrame->getParagraphs()->get_Item(0);
$label->setText($alignmentNames[$i]);
$label->getParagraphFormat()->setAlignment(TextAlignment::Left);
$label->getParagraphFormat()->getDefaultPortionFormat()->setFontHeight(14);
$label->getParagraphFormat()->getDefaultPortionFormat()->setLatinFont($font);
$label->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$label->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor($gray);
$paragraph = new Paragraph();
$paragraph->getParagraphFormat()->setFontAlignment($alignments[$i]);
$paragraph->getParagraphFormat()->setAlignment(TextAlignment::Left);
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->setLatinFont($font);
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor($black);
foreach ($fontSizes as $fontSize) {
$portion = new Portion("Ag ");
$portion->getPortionFormat()->setFontHeight($fontSize);
$paragraph->getPortions()->add($portion);
}
$textFrame->getParagraphs()->add($paragraph);
}
$presentation->save("font_alignment.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Zarovnání písma používá metriky písma, takže viditelné okraje jednotlivých znaků se nemusí přesně sloučit. Příklad zahrnuje jak velké písmeno, tak spodní zakončení, aby pomohl ukázat rozdíl mezi zarovnáním k základní lince a dolnímu zarovnání. Dostupnost a nahrazení písma, použité znaky a rozdíl ve velikostech písma ovlivňují výsledek. Rozměry rámečku, okraje, řádkování, zalamování 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 ParagraphFormat::setAlignment, který řídí vodorovné zarovnání odstavce, a od TextFrameFormat::setAnchoringType, který umisťuje textový blok svisle uvnitř tvaru. Formátování horního a dolního indexu pomocí BasePortionFormat::setEscapement posouvá jednotlivé části relativně k základní lince místo nastavení zarovnání písma pro řádky odstavce.
Nastavit průhlednost textu
Průhlednost textu je řízena pomocí alfa komponenty barvy přiřazené k BasePortionFormat::getFillFormat. V níže uvedených příkladech alpha = 50 představuje hodnotu 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:
use aspose\slides\FillType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$alpha = 50;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$fillFormat = $paragraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat();
// Nastavte barvu výplně textu na průhlednou barvu.
$fillFormat->setFillType(FillType::Solid);
$transparentColor = new Java("java.awt.Color", 0, 0, 0, $alpha);
$fillFormat->getSolidFillColor()->setColor($transparentColor);
$presentation->save("transparent_paragraph.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Následující ukázkový kód ukazuje, jak použít průhlednost na části textu s tučným písmem:
use aspose\slides\FillType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$alpha = 50;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$transparentColor = new Java("java.awt.Color", 0, 0, 0, $alpha);
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
if (java_values($portion->getPortionFormat()->getEffective()->getFontBold())) {
// Nastavte průhlednost části textu.
$fillFormat = $portion->getPortionFormat()->getFillFormat();
$fillFormat->setFillType(FillType::Solid);
$fillFormat->getSolidFillColor()->setColor($transparentColor);
}
}
$presentation->save("transparent_text_portions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Nastavit mezery mezi znaky textu
Použijte BasePortionFormat::setSpacing k rozšíření nebo zúžení mezery mezi znaky v textovém poli. Příklady přidávají 3 body mezery; záporné hodnoty zúží text.
Níže uvedený PHP kód ukazuje, jak rozšířit mezeru mezi znaky v celém odstavci:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
// Poznámka: Použijte záporné hodnoty k zmenšení mezery mezi znaky.
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->setSpacing(3); // Rozšířit mezeru mezi znaky.
$presentation->save("character_spacing_in_paragraph.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Níže uvedený ukázkový kód ukazuje, jak rozšířit mezeru mezi znaky v částech textu s tučným písmem:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
if (java_values($portion->getPortionFormat()->getEffective()->getFontBold())) {
// Poznámka: Použijte záporné hodnoty k zmenšení mezery mezi znaky.
$portion->getPortionFormat()->setSpacing(3); // Rozšířit mezeru mezi znaky.
}
}
$presentation->save("character_spacing_in_text_portions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Zakázat kerning pro konkrétní písma
V některých případech může text vykreslený pomocí Aspose.Slides vypadat o něco těsněji než stejný text zobrazený v PowerPointu. K tomu může dojít, 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.
Aby byl výstup v takových případech blíže k PowerPointu, můžete zakázat kerning pro části textu, které používají dotčené písmo. Nastavte BasePortionFormat::setKerningMinimalSize na hodnotu větší než skutečná velikost písma. Tento příklad vyžaduje soubor “presentation.pptx” s textovým polem jako prvním tvarem na prvním snímku. Kontroluje efektivní názvy písem, včetně zděděných, a nastavuje prahovou hodnotu 100 bodů pro části, které používají Roboto. Tím se zakáže kerning pro odpovídající části s velikostí písma pod 100 bodů:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("presentation.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$targetFont = "Roboto";
$paragraphCount = java_values($autoShape->getTextFrame()->getParagraphs()->getCount());
for ($paragraphIndex = 0; $paragraphIndex < $paragraphCount; $paragraphIndex++) {
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item($paragraphIndex);
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
$portionFormat = $portion->getPortionFormat()->getEffective();
$latinFont = $portionFormat->getLatinFont();
$eastAsianFont = $portionFormat->getEastAsianFont();
$complexScriptFont = $portionFormat->getComplexScriptFont();
if ((!java_is_null($latinFont) && $latinFont->getFontName() == $targetFont) ||
(!java_is_null($eastAsianFont) && $eastAsianFont->getFontName() == $targetFont) ||
(!java_is_null($complexScriptFont) && $complexScriptFont->getFontName() == $targetFont)) {
$portion->getPortionFormat()->setKerningMinimalSize(100);
}
}
}
$presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
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 pro písma ovlivněná tímto specifickým chováním PowerPointu.
Spravovat vlastnosti písma textu
Vlastnosti písma lze nastavit na úrovni odstavce pomocí ParagraphFormat::getDefaultPortionFormat nebo na jednotlivých částech pomocí PortionFormat.
Následující příklad nastaví výchozí písmo prvního odstavce na 12 bodů Times New Roman s tučným, kurzívou a tečkovaným podtržením. Výslovné formátování na jednotlivých částech má přednost před těmito výchozími nastaveními.
use aspose\slides\FontData;
use aspose\slides\NullableBool;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextUnderlineType;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$defaultPortionFormat = $paragraph->getParagraphFormat()->getDefaultPortionFormat();
$font = new FontData("Times New Roman");
// Nastavte vlastnosti písma pro odstavec.
$defaultPortionFormat->setFontHeight(12);
$defaultPortionFormat->setFontBold(NullableBool::True);
$defaultPortionFormat->setFontItalic(NullableBool::True);
$defaultPortionFormat->setFontUnderline(TextUnderlineType::Dotted);
$defaultPortionFormat->setLatinFont($font);
$presentation->save("font_properties_for_paragraph.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Následující příklad aplikuje 13 bodů Times New Roman, kurzívu a tečkované podtržení na části, jejichž efektivní formátování je tučné:
use aspose\slides\FontData;
use aspose\slides\NullableBool;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextUnderlineType;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$font = new FontData("Times New Roman");
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
if (java_values($portion->getPortionFormat()->getEffective()->getFontBold())) {
// Nastavte vlastnosti písma pro část textu.
$portionFormat = $portion->getPortionFormat();
$portionFormat->setFontHeight(13);
$portionFormat->setFontItalic(NullableBool::True);
$portionFormat->setFontUnderline(TextUnderlineType::Dotted);
$portionFormat->setLatinFont($font);
}
}
$presentation->save("font_properties_for_text_portions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Nastavit otáčení textu
Použijte TextFrameFormat::setTextVerticalType k nastavení předdefinované orientace textu uvnitř tvaru.
Následující ukázkový kód nastaví orientaci textu ve tvaru na TextVerticalType::Vertical270, což otáčí text o 90 stupňů proti směru hodinových ručiček:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextVerticalType;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$autoShape->getTextFrame()->getTextFrameFormat()->setTextVerticalType(TextVerticalType::Vertical270);
$presentation->save("text_rotation.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Nastavit vlastní otáčení pro textové rámečky
Použijte TextFrameFormat::setRotationAngle k nastavení vlastního úhlu otáčení pro TextFrame.
Níže uvedený ukázkový kód otáčí textový rám o 3 stupně po směru hodinových ručiček uvnitř tvaru:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$autoShape->getTextFrame()->getTextFrameFormat()->setRotationAngle(3);
$presentation->save("custom_text_rotation.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Nastavit řádkování odstavců
Aspose.Slides poskytuje ParagraphFormat::setSpaceAfter, ParagraphFormat::setSpaceBefore a ParagraphFormat::setSpaceWithin k řízení mezery odstavců. Tyto vlastnosti se používají následovně:
- Použijte kladnou hodnotu k určení řádkování jako procenta výšky řádku.
- Použijte zápornou hodnotu k určení řádkování v bodech.
Následující příklad nastaví mezeru v prvním odstavci na 200 % výšky řádku (dvojité řádkování):
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$paragraph->getParagraphFormat()->setSpaceWithin(200);
$presentation->save("line_spacing.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Ovládání zalamování řádků
Pravidla zalamování řádků v odstavci jsou užitečná v úzkých textech a prezentacích, které kombinují latinský a východoasijský text. Následující metody patří do ParagraphFormat, a tudíž se vztahují na celý odstavec:
- setLatinLineBreak řídí pravidla zalamování řádků pro latinsky psaný text. V kombinovaném textu jeho změna může také změnit, kde se zalamuje sousední východoasijský text a interpunkce.
- setEastAsianLineBreak řídí pravidla zalamování řádků pro východoasijské texty, včetně omezení pro znaky na začátku a konci řádku.
Tato pravidla nenahrazují TextFrameFormat::setWrapText, která povoluje automatické zalamování v textovém rámečku. Ovlivňují rozvržení, když k zalamování dochází; nevkládají znaky pro konec řádku. Výslovný konec řádku vynutí nový řádek v odstavci nezávisle na dostupné šířce.
Následující samostatný příklad vytvoří úzký textový blok obsahující čínštinu a latinku. Explicitně nastaví obě možnosti zalamování řádků a uloží “line_breaking.pptx”. Pro experimentování s libovolným pravidlem změňte odpovídající hodnotu při zachování ostatních nastavení. Příklad používá 24 bodů Arial a SimSun s šířkou rámu 160 bodů a nulovými vodorovnými okraji textového rámu. TextFrameFormat::setAutofitType se volá s TextAutofitType::None, aby velikost textu a rozměry rámu zůstaly pevné.
use aspose\slides\FillType;
use aspose\slides\FontData;
use aspose\slides\NullableBool;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TextAlignment;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 160, 300);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setWrapText(NullableBool::True);
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::None);
$textFrame->getTextFrameFormat()->setMarginLeft(0);
$textFrame->getTextFrameFormat()->setMarginRight(0);
$paragraph = $textFrame->getParagraphs()->get_Item(0);
$paragraph->setText("中文排版测试,PowerPoint 中文演示。");
$format = $paragraph->getParagraphFormat();
$format->setAlignment(TextAlignment::Left);
$format->getDefaultPortionFormat()->setFontHeight(24);
$latinFont = new FontData("Arial");
$format->getDefaultPortionFormat()->setLatinFont($latinFont);
$eastAsianFont = new FontData("SimSun");
$format->getDefaultPortionFormat()->setEastAsianFont($eastAsianFont);
$format->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$blackColor = java("java.awt.Color")->BLACK;
$format->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor($blackColor);
$format->setLatinLineBreak(NullableBool::False);
$format->setEastAsianLineBreak(NullableBool::True);
$presentation->save("line_breaking.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Řízení zavěšené interpunkce
ParagraphFormat::setHangingPunctuation umožňuje oprávněné interpunkční znaky přesahovat pravý okraj textové řádky místo aby se umístily na další řádek. Platí pro celý odstavec a liší se od zavěšeného odsazení.
Následující samostatný příklad povolí zavěšenou interpunkci v 100 bodové šířce textového rámu a uloží “hanging_punctuation.pptx”. S 24 bodovým Arial a nulovými vodorovnými okraji textového rámu zůstane poslední tečka za slovem “sentence” a přesáhne pravý okraj textu. Nastavte vlastnost na NullableBool::False pro porovnání: s tímto nastavením tečka zabírá samostatný řádek. Zalamování je povoleno a automatické přizpůsobení zakázáno, aby šířka zůstala pevná.
use aspose\slides\FillType;
use aspose\slides\FontData;
use aspose\slides\NullableBool;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TextAlignment;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 100, 200);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setWrapText(NullableBool::True);
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::None);
$textFrame->getTextFrameFormat()->setMarginLeft(0);
$textFrame->getTextFrameFormat()->setMarginRight(0);
$paragraph = $textFrame->getParagraphs()->get_Item(0);
$paragraph->setText("Simple text, next sentence.");
$format = $paragraph->getParagraphFormat();
$format->setAlignment(TextAlignment::Left);
$format->getDefaultPortionFormat()->setFontHeight(24);
$latinFont = new FontData("Arial");
$format->getDefaultPortionFormat()->setLatinFont($latinFont);
$format->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$blackColor = java("java.awt.Color")->BLACK;
$format->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor($blackColor);
$format->setHangingPunctuation(NullableBool::True);
$presentation->save("hanging_punctuation.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Ne každá interpunkce může být zavěšena. Podmínky písma a rozvržení popsané výše se také vztahují na toto porovnání: změna písma, dostupné šířky, okrajů nebo nastavení automatického přizpůsobení může odstranit viditelný rozdíl.
Nastavit typ automatického přizpůsobení pro textové rámečky
TextFrameFormat::setAutofitType určuje, jak se text chová, když přesáhne hranice svého kontejneru. Použijte jej k ovládání, zda se text zmenšuje, přeteče, nebo automaticky mění velikost tvaru. Následující příklad konfiguruje tvar tak, aby se změnil podle textu a uloží výsledek do “autofit_type.pptx”.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextAutofitType;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$autoShape->getTextFrame()->getTextFrameFormat()->setAutofitType(TextAutofitType::Shape);
$presentation->save("autofit_type.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Pro spočítání řádků po automatickém zalamování a zjištění, jak změna šířky textu nebo tvaru ovlivní výsledek, viz Count Rendered Lines. Pouhý počet řádků neukazuje, zda text přeteče svůj kontejner.
Nastavit ukotvení textových rámců
TextFrameFormat::setAnchoringType určuje, jak je text umístěn svisle uvnitř tvaru, například nahoře, uprostřed nebo dole. Následující příklad ukotví text ke spodnímu okraji prvního tvaru a uloží výsledek do “text_anchor.pptx”.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TextAnchorType;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$autoShape->getTextFrame()->getTextFrameFormat()->setAnchoringType(TextAnchorType::Bottom);
$presentation->save("text_anchor.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Nastavit tabulaci textu
Použijte ParagraphFormat::setDefaultTabSize a ParagraphFormat::getTabs k nastavení zarážek tabulátoru v odstavci. Následující příklad nastaví výchozí interval tabulátoru na 100 bodů a přidá levé zarovnání zarážky na 30 bodů. Tato nastavení ovlivňují text obsahující znaky tabulátoru.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TabAlignment;
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$paragraph->getParagraphFormat()->setDefaultTabSize(100);
$paragraph->getParagraphFormat()->getTabs()->add(30, TabAlignment::Left);
$presentation->save("paragraph_tabs.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Výsledek:

Nastavit jazyk kontroly pravopisu
Aspose.Slides poskytuje BasePortionFormat::setLanguageId, který umožňuje nastavit jazyk kontroly pravopisu pro část textu. Jazyk kontroly pravopisu určuje jazyk používaný pro kontrolu pravopisu a gramatiky v PowerPointu.
Následující příklad vyžaduje “presentation.pptx” s textovým polem jako prvním tvarem na prvním snímku a alespoň jedním odstavcem. Nahrazuje obsah prvního odstavce řetězcem “1。”, nastaví SimSun jako jeho písmo a přiřadí jazyk kontroly pravopisu pro zjednodušenou čínštinu (zh-CN). Uloží výsledek do “proofing_language.pptx”:
use aspose\slides\FontData;
use aspose\slides\Portion;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("presentation.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
$paragraph->getPortions()->clear();
$font = new FontData("SimSun");
$textPortion = new Portion();
$textPortion->getPortionFormat()->setComplexScriptFont($font);
$textPortion->getPortionFormat()->setEastAsianFont($font);
$textPortion->getPortionFormat()->setLatinFont($font);
// Nastavte Id jazyka kontroly pravopisu.
$textPortion->getPortionFormat()->setLanguageId("zh-CN");
$textPortion->setText("1。");
$paragraph->getPortions()->add($textPortion);
$presentation->save("proofing_language.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Nastavit výchozí jazyk
Použijte LoadOptions::setDefaultTextLanguage k definování výchozího jazyka pro text vytvořený při načítání nebo tvorbě prezentace. Následující příklad vytvoří prezentaci s americkou angličtinou jako výchozím jazykem textu, přidá textové pole a vytiskne en-US pro jeho první část textu.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
$loadOptions = new LoadOptions();
$loadOptions->setDefaultTextLanguage("en-US");
$presentation = new Presentation($loadOptions);
try {
$slide = $presentation->getSlides()->get_Item(0);
// Přidejte nový obdélníkový tvar s textem.
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 20, 150, 50);
$shape->getTextFrame()->setText("Sample text");
// Zkontrolujte jazyk první části.
$portion = $shape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
echo $portion->getPortionFormat()->getLanguageId();
} finally {
$presentation->dispose();
}
Nastavit výchozí styl textu
Pro použití výchozího formátování textu na úrovni prezentace použijte Presentation::getDefaultTextStyle.
Následující příklad nastaví 14bodové 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 dědit, pokud není přepsáno konkrétnějším formátováním.
use aspose\slides\NullableBool;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Získat formát odstavce nejvyšší úrovně.
$paragraphFormat = $presentation->getDefaultTextStyle()->getLevel(0);
if (!java_is_null($paragraphFormat)) {
$paragraphFormat->getDefaultPortionFormat()->setFontHeight(14);
$paragraphFormat->getDefaultPortionFormat()->setFontBold(NullableBool::True);
}
$presentation->save("default_text_style.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Extrahovat text s efektem Vše velká písmena
V PowerPointu aplikace fontového efektu All Caps (vše velké písmo) způsobí, že text na snímku vypadá jako velká písmena, i když byl původně zadán malými písmeny. Když takovou část textu získáte pomocí Aspose.Slides, knihovna vrátí text přesně tak, jak byl zadán. Aby byl text shodný s tím, co je zobrazeno, zkontrolujte TextCapType a při hodnotě All převedete vrácený řetězec na velká písmena.
Tento příklad vyžaduje “sample2.pptx” s textovým polem jako prvním tvarem na prvním snímku. První část prvního odstavce obsahuje “Hello, Aspose!” s aplikovaným efektem All Caps, jak je zobrazeno níže.

Níže uvedený ukázkový kód ukazuje, jak extrahovat text s aplikovaným efektem All Caps:
use aspose\slides\Presentation;
use aspose\slides\TextCapType;
$presentation = new Presentation("sample2.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->get_Item(0);
$textPortion = $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$originalText = $textPortion->getText();
echo "Original text: ", $originalText, "\n";
$textFormat = $textPortion->getPortionFormat()->getEffective();
if (java_values($textFormat->getTextCapType()) === TextCapType::All) {
$text = strtoupper($originalText);
echo "All-Caps effect: ", $text, "\n";
}
} finally {
$presentation->dispose();
}
Výstup:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Jak upravit text v tabulce na snímku?
K úpravě textu v tabulce na snímku použijte Table. Procházejte buňky a aktualizujte každou buňku pomocí Cell::getTextFrame a formátování odstavců pomocí Paragraph::getParagraphFormat.
Jak aplikovat gradientní barvu na text v PowerPoint snímku?
Pro aplikaci gradientní barvy na text použijte BasePortionFormat::getFillFormat. Nastavte FillFormat::setFillType na FillType::Gradient a nakonfigurujte zastavení gradientu, směr a průhlednost.