PowerPoint szövegbekezdések kezelése PHP-ben
Áttekintés
Aspose.Slides for PHP via Java a szöveget szövegdobozok, bekezdések és részek hierarchiájában ábrázolja:
- TextFrame a szövegkonténert jelenti egy alakzatban, és hozzáférést biztosít a bekezdésgyűjteményéhez.
- Paragraph egy bekezdést jelöl egy szövegdobozban, és hozzáférést ad a részeihez valamint a bekezdés szintű formázáshoz.
- Portion egy szövegrészt képvisel egy bekezdésen belül. Minden rész saját szöveggel és karakter szintű formázással rendelkezhet.
Egy bekezdés ezért különböző betűtípusú, színű, méretű és egyéb formázású szöveget tartalmazhat több rész használatával.
Bekezdések létrehozása és formázása
Több részt tartalmazó bekezdések létrehozása
Az alábbi lépések egy szövegdobozt hoznak létre három bekezdéssel, mindegyik három részt tartalmazva:
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezze meg a megfelelő diát az indexe alapján.
- Adj egy téglalap alakú AutoShape elemet a diára.
- Szerezze meg a forma TextFrame objektumát.
- Használja az alapértelmezett bekezdést, és adjon hozzá két további Paragraph objektumot a szövegdobozhoz.
- Adjon elegendő Portion objektumot minden bekezdéshez, hogy három részt tartalmazzanak. Az alapértelmezett bekezdés már egy üres részt tartalmaz.
- Állítsa be minden rész szövegét.
- Alkalmazzon karakter szintű formázást a Portion::getPortionFormat segítségével.
- Mentse el a módosított prezentációt.
Ez a PHP példa megvalósítja a lépéseket:
use aspose\slides\FillType;
use aspose\slides\NullableBool;
use aspose\slides\Paragraph;
use aspose\slides\Portion;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 150, 300, 150);
$textFrame = $shape->getTextFrame();
$firstParagraph = $textFrame->getParagraphs()->get_Item(0);
$firstParagraph->getPortions()->add(new Portion());
$firstParagraph->getPortions()->add(new Portion());
$secondParagraph = new Paragraph();
$secondParagraph->getPortions()->add(new Portion());
$secondParagraph->getPortions()->add(new Portion());
$secondParagraph->getPortions()->add(new Portion());
$textFrame->getParagraphs()->add($secondParagraph);
$thirdParagraph = new Paragraph();
$thirdParagraph->getPortions()->add(new Portion());
$thirdParagraph->getPortions()->add(new Portion());
$thirdParagraph->getPortions()->add(new Portion());
$textFrame->getParagraphs()->add($thirdParagraph);
$paragraphCount = java_values($textFrame->getParagraphs()->getCount());
for ($paragraphIndex = 0; $paragraphIndex < $paragraphCount; $paragraphIndex++) {
$paragraph = $textFrame->getParagraphs()->get_Item($paragraphIndex);
$portionCount = java_values($paragraph->getPortions()->getCount());
for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
$portion = $paragraph->getPortions()->get_Item($portionIndex);
$portion->setText("Portion " . ($paragraphIndex + 1) . "." . ($portionIndex + 1));
if ($portionIndex == 0) {
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$portion->getPortionFormat()->setFontBold(NullableBool::True);
$portion->getPortionFormat()->setFontHeight(15);
} else if ($portionIndex == 1) {
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
$portion->getPortionFormat()->setFontItalic(NullableBool::True);
$portion->getPortionFormat()->setFontHeight(18);
}
}
}
$presentation->save("paragraphs_with_portions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Felsorolások és számozott listák létrehozása
Felsorolás vagy számozott lista létrehozása
A golyók és a számozás megkönnyítik a kapcsolódó elemek átláthatóságát. Az Aspose.Slides-ben a lista beállításait a BulletFormat határozza meg.
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezze meg a megfelelő diát az indexe alapján.
- Adj egy AutoShape elemet a kiválasztott diára.
- Szerezze meg a forma TextFrame objektumát.
- Távolítsa el az alapértelmezett bekezdést a szövegdobozból.
- Hozzon létre egy Paragraph elemet egy szimbólum golyóhoz.
- Állítsa be a BulletFormat::setType értékét a BulletType::Symbol típusra, és adja meg a golyó karakterét.
- Állítsa be a bekezdés szövegét, behúzását, golyó színét és golyó magasságát.
- Adja hozzá a bekezdést a szövegdobozhoz.
- Hozzon létre egy második bekezdést, és állítsa be a BulletFormat::setType értékét a BulletType::Numbered típusra.
- Konfigurálja a számozott golyó stílusát, és adja hozzá a bekezdést a szövegdobozhoz.
- Mentse el a prezentációt.
Ez a PHP példa egy szimbólum golyót és egy számozott golyót hoz létre:
use aspose\slides\BulletType;
use aspose\slides\ColorType;
use aspose\slides\NullableBool;
use aspose\slides\NumberedBulletStyle;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
$textFrame = $shape->getTextFrame();
$textFrame->getParagraphs()->clear();
$symbolParagraph = new Paragraph();
$symbolParagraph->setText("Welcome to Aspose.Slides");
$symbolParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$symbolParagraph->getParagraphFormat()->getBullet()->setChar("•");
$symbolParagraph->getParagraphFormat()->setIndent(25);
$symbolParagraph->getParagraphFormat()->getBullet()->getColor()->setColorType(ColorType::RGB);
$symbolParagraph->getParagraphFormat()->getBullet()->getColor()->setColor(java("java.awt.Color")->BLACK);
$symbolParagraph->getParagraphFormat()->getBullet()->setBulletHardColor(NullableBool::True);
$symbolParagraph->getParagraphFormat()->getBullet()->setHeight(100);
$textFrame->getParagraphs()->add($symbolParagraph);
$numberedParagraph = new Paragraph();
$numberedParagraph->setText("This is a numbered item");
$numberedParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$numberedParagraph->getParagraphFormat()->getBullet()->setNumberedBulletStyle(NumberedBulletStyle::BulletCircleNumWDBlackPlain);
$numberedParagraph->getParagraphFormat()->setIndent(25);
$numberedParagraph->getParagraphFormat()->getBullet()->getColor()->setColorType(ColorType::RGB);
$numberedParagraph->getParagraphFormat()->getBullet()->getColor()->setColor(java("java.awt.Color")->BLACK);
$numberedParagraph->getParagraphFormat()->getBullet()->setBulletHardColor(NullableBool::True);
$numberedParagraph->getParagraphFormat()->getBullet()->setHeight(100);
$textFrame->getParagraphs()->add($numberedParagraph);
$presentation->save("bulleted_and_numbered_list.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Képgolyók használata
A képgolyók lehetővé teszik egy egyéni kép használatát szimbólum vagy szám helyett.
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezze meg a megfelelő diát az indexe alapján.
- Adj egy AutoShape elemet, és szerezze meg annak TextFrame objektumát.
- Távolítsa el az alapértelmezett bekezdést a szövegdobozból.
- Töltse be a golyó képet, és adja hozzá a prezentáció képgyűjteményéhez egy PPImage formájában.
- Hozzon létre egy Paragraph elemet, és állítsa be a szövegét.
- Állítsa be a BulletFormat::setType értékét a BulletType::Picture típusra.
- Rendelje hozzá a képet a BulletFormat::getPicture segítségével, és állítsa be a golyó magasságát.
- Adja hozzá a bekezdést a szövegdobozhoz.
- Mentse el a módosított prezentációt.
Ez a PHP példa egy képgolyót hoz létre:
use aspose\slides\BulletType;
use aspose\slides\Images;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$bulletImage = Images::fromFile("bullets.png");
try {
$presentationImage = $presentation->getImages()->addImage($bulletImage);
} finally {
$bulletImage->dispose();
}
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
$textFrame = $shape->getTextFrame();
$textFrame->getParagraphs()->clear();
$paragraph = new Paragraph();
$paragraph->setText("Welcome to Aspose.Slides");
$paragraph->getParagraphFormat()->getBullet()->setType(BulletType::Picture);
$paragraph->getParagraphFormat()->getBullet()->getPicture()->setImage($presentationImage);
$paragraph->getParagraphFormat()->getBullet()->setHeight(100);
$textFrame->getParagraphs()->add($paragraph);
$presentation->save("picture_bullet.pptx", SaveFormat::Pptx);
$presentation->save("picture_bullet.ppt", SaveFormat::Ppt);
} finally {
$presentation->dispose();
}
Többszintű lista létrehozása
Állítsa be a ParagraphFormat::setDepth értékét a bekezdések listában való különböző szintekre helyezéséhez. A legfelső szint mélysége 0.
- Hozzon létre egy Presentation objektumot, és szerezze meg egy diát.
- Adj egy AutoShape elemet, és távolítsa el az alapértelmezett bekezdést a szövegdobozából.
- Hozzon létre négy bekezdést, és konfigurálja azok golyó szimbólumait.
- Állítsa be a ParagraphFormat::setDepth értékét
0,1,2és3mélységre. - Adja hozzá a bekezdéseket a szövegdobozhoz, és mentse el a prezentációt.
Ez a PHP példa egy négy szintű golyólistát hoz létre:
use aspose\slides\BulletType;
use aspose\slides\FillType;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
$textFrame = $shape->getTextFrame();
$textFrame->getParagraphs()->clear();
$firstParagraph = new Paragraph();
$firstParagraph->setText("Content");
$firstParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$firstParagraph->getParagraphFormat()->getBullet()->setChar("•");
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$firstParagraph->getParagraphFormat()->setDepth(0);
$secondParagraph = new Paragraph();
$secondParagraph->setText("Second level");
$secondParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$secondParagraph->getParagraphFormat()->getBullet()->setChar('-');
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$secondParagraph->getParagraphFormat()->setDepth(1);
$thirdParagraph = new Paragraph();
$thirdParagraph->setText("Third level");
$thirdParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$thirdParagraph->getParagraphFormat()->getBullet()->setChar("•");
$thirdParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$thirdParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$thirdParagraph->getParagraphFormat()->setDepth(2);
$fourthParagraph = new Paragraph();
$fourthParagraph->setText("Fourth level");
$fourthParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$fourthParagraph->getParagraphFormat()->getBullet()->setChar('-');
$fourthParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$fourthParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$fourthParagraph->getParagraphFormat()->setDepth(3);
$textFrame->getParagraphs()->add($firstParagraph);
$textFrame->getParagraphs()->add($secondParagraph);
$textFrame->getParagraphs()->add($thirdParagraph);
$textFrame->getParagraphs()->add($fourthParagraph);
$presentation->save("multilevel_list.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Számozott listaelemek kezdőértékének egyedi beállítása
Használja a BulletFormat::setNumberedBulletStartWith metódust a számozott bekezdés kezdeti számának beállításához.
- Hozzon létre egy Presentation objektumot, és adj egy AutoShape elemet egy diára.
- Távolítsa el az alapértelmezett bekezdést a forma szövegdobozából.
- Hozzon létre három számozott bekezdést.
- Állítsa be a BulletFormat::setNumberedBulletStartWith értékét
2,3és7‑re a megfelelő bekezdésekhez. - Adja hozzá a bekezdéseket a szövegdobozhoz, és mentse el a prezentációt.
Ez a PHP példa egyéni kezdőszámot rendel minden bekezdéshez:
use aspose\slides\BulletType;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$shape = $presentation->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
$textFrame = $shape->getTextFrame();
$textFrame->getParagraphs()->clear();
$firstParagraph = new Paragraph();
$firstParagraph->setText("Start at 2");
$firstParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$firstParagraph->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(2);
$textFrame->getParagraphs()->add($firstParagraph);
$secondParagraph = new Paragraph();
$secondParagraph->setText("Start at 3");
$secondParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$secondParagraph->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(3);
$textFrame->getParagraphs()->add($secondParagraph);
$thirdParagraph = new Paragraph();
$thirdParagraph->setText("Start at 7");
$thirdParagraph->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$thirdParagraph->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(7);
$textFrame->getParagraphs()->add($thirdParagraph);
$presentation->save("custom_numbered_list.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Bekezdéselrendezés és befejező tulajdonságok vezérlése
Első sor behúzásának beállítása
Használja a ParagraphFormat::setIndent metódust az első sor behúzásának szabályozásához. Ez a metódus csak az első sort mozgatja a bekezdés bal margójához képest. A pozitív érték jobbra tolja az első sort, míg a többi sor a bekezdés törzséhez igazodik.
Használja a ParagraphFormat::setMarginLeft metódust, ha a teljes bekezdést szeretné eltolni. Használja a ParagraphFormat::setIndent metódust, ha csak az első sort akarja eltolni.
Az alábbi példa több bekezdést hoz létre, és különböző ParagraphFormat::setIndent értékeket alkalmaz, hogy bemutassa, miként befolyásolja az első sor behúzása a bekezdés elrendezését.
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezze meg a cél diát.
- Adj egy téglalap alakú AutoShape elemet a diára.
- Szerezze meg a forma TextFrame objektumát, és távolítsa el az alapértelmezett bekezdést.
- Hozzon létre több bekezdést, és állítson be különböző ParagraphFormat::setIndent értékeket.
- Adja hozzá a bekezdéseket a szövegdobozhoz.
- Mentse el a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan állíthat be bekezdésbehúzást:
use aspose\slides\FillType;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 420, 220);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
$shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::Shape);
$textFrame->getParagraphs()->clear();
$firstParagraph = new Paragraph();
$firstParagraph->setText("No first-line indent. Wrapped lines start at the same position as the first line.");
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$firstParagraph->getParagraphFormat()->setMarginLeft(20.0);
$firstParagraph->getParagraphFormat()->setIndent(0.0);
$secondParagraph = new Paragraph();
$secondParagraph->setText("First-line indent of 20 points. The first line moves to the right, while wrapped lines remain aligned to the paragraph body.");
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$secondParagraph->getParagraphFormat()->setMarginLeft(20.0);
$secondParagraph->getParagraphFormat()->setIndent(20.0);
$thirdParagraph = new Paragraph();
$thirdParagraph->setText("First-line indent of 40 points. This paragraph shows a larger first-line offset to make the effect easier to see.");
$thirdParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$thirdParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$thirdParagraph->getParagraphFormat()->setMarginLeft(20.0);
$thirdParagraph->getParagraphFormat()->setIndent(40.0);
$textFrame->getParagraphs()->add($firstParagraph);
$textFrame->getParagraphs()->add($secondParagraph);
$textFrame->getParagraphs()->add($thirdParagraph);
$presentation->save("paragraph_indent.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Az eredmény:

Függő behúzás beállítása
A függő behúzás egy olyan bekezdéselrendezés, ahol az első sor balra indul a többi sorhoz képest. Az Aspose.Slides-ben ezt a hatást a ParagraphFormat::setIndent segítségével hozhatja létre. Negatív értékkel mozgathatja az első sort balra a bekezdés törzséhez képest.
Gyakorlatban a ParagraphFormat::setMarginLeft határozza meg a bekezdés törzsének bal pozícióját, míg a ParagraphFormat::setIndent állítja be az első sor pozícióját ehhez a margóhoz képest. Függő behúzás létrehozásához adjon pozitív értéket a setMarginLeft‑nek, és negatív értéket a setIndent‑nek.
Ez a formázás hasznos bibliográfiák, hivatkozások, szószedet-bejegyzések és más olyan bekezdések esetén, ahol a sortörésnek a bekezdés törzsének alá kell esnie, nem pedig az első sor első karaktere alá.
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezze meg a cél diát.
- Adj egy téglalap alakú AutoShape elemet a diára.
- Szerezze meg a forma TextFrame objektumát, és távolítsa el az alapértelmezett bekezdést.
- Hozzon létre bekezdéseket, és adjon pozitív értéket a ParagraphFormat::setMarginLeft minden bekezdéshez.
- Adjon negatív értéket a ParagraphFormat::setIndent számára a függő behúzás hatásának eléréséhez.
- Adja hozzá a bekezdéseket a szövegdobozhoz.
- Mentse el a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan állíthat be függő behúzást egy bekezdéshez:
use aspose\slides\FillType;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 420, 220);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
$shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::Shape);
$textFrame->getParagraphs()->clear();
$firstParagraph = new Paragraph();
$firstParagraph->setText("A hanging indent is created by combining a positive left margin with a negative indent. The first line starts to the left, while wrapped lines align with the paragraph body.");
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$firstParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$firstParagraph->getParagraphFormat()->setMarginLeft(40.0);
$firstParagraph->getParagraphFormat()->setIndent(-20.0);
$secondParagraph = new Paragraph();
$secondParagraph->setText("This second example uses a deeper hanging indent so the difference between the first line and the wrapped lines is easier to compare.");
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
$secondParagraph->getParagraphFormat()->setMarginLeft(60.0);
$secondParagraph->getParagraphFormat()->setIndent(-30.0);
$textFrame->getParagraphs()->add($firstParagraph);
$textFrame->getParagraphs()->add($secondParagraph);
$presentation->save("hanging_indent.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Az eredmény:

Befejező bekezdésformázás beállítása
A Paragraph::setEndParagraphPortionFormat vezérli a bekezdés befejező jelének formázását. Az alábbi PHP példa betűméretet és latin betűtípust rendel a második bekezdés befejező jeléhez:
- Töltsön be egy Presentation objektumot, és szerezze meg egy diát.
- Adj egy AutoShape elemet, és törölje az alapértelmezett bekezdést.
- Hozzon létre két bekezdést, és adjon hozzá szövegrészeket.
- Hozzon létre egy PortionFormat objektumot a második bekezdés befejező jeléhez.
- Állítsa be a BasePortionFormat::setFontHeight és a BasePortionFormat::setLatinFont értékeket.
- Rendelje hozzá a formátumot a Paragraph::setEndParagraphPortionFormat segítségével, és mentse el a prezentációt.
use aspose\slides\FontData;
use aspose\slides\Paragraph;
use aspose\slides\Portion;
use aspose\slides\PortionFormat;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation("Test.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 200, 250);
$textFrame = $shape->getTextFrame();
$textFrame->getParagraphs()->clear();
$firstParagraph = new Paragraph();
$firstParagraph->getPortions()->add(new Portion("Sample text"));
$secondParagraph = new Paragraph();
$secondParagraph->getPortions()->add(new Portion("Sample text 2"));
$endParagraphFormat = new PortionFormat();
$endParagraphFormat->setFontHeight(48);
$endParagraphFormat->setLatinFont(new FontData("Times New Roman"));
$secondParagraph->setEndParagraphPortionFormat($endParagraphFormat);
$textFrame->getParagraphs()->add($firstParagraph);
$textFrame->getParagraphs()->add($secondParagraph);
$presentation->save("end_paragraph_format.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Megjelenített sorok számlálása
A bekezdés szabályok, amelyek az automatikus tördelést és a sortörésnél lévő írásjeleket érintik, a Control Line Breaking és a Control Hanging Punctuation oldalakon találhatók.
Használja a Paragraph::getLinesCount metódust a bekezdés által elfoglalt sorok számának meghatározásához a szöveg elrendezése után, beleértve az automatikus tördelést. Ez hasznos a szöveghossz és az elrendezés ellenőrzésénél prezentációs sablonokban.
Egy bekezdés a TextFrame::getParagraphs egy elemét képezi, és több megjelenített sort is elfoglalhat. Egy explicit sortörés a bekezdésen belül új sort kényszerít anélkül, hogy új bekezdést hozna létre. Az automatikus tördelés a rendelkezésre álló szélesség alapján hoz létre sorokat anélkül, hogy explicit sortöréseket illesztene a szövegbe. Így a bekezdések vagy a sortörés karakterek számlálása nem adja meg a megjelenített sorok számát.
Az alábbi példa egy szöveges alakzatot hoz létre, megszámolja a sorokat, szűkíti az alakzatot, majd egy rövidebb szövegre cseréli a tartalmat. A tördelés engedélyezett, az automatikus méretezés (autofit) le van tiltva, így az alakzat szélessége szabályozza a tördelést anélkül, hogy a szöveget vagy az alakzat méretét automatikusan csökkentené. Az alakzat méretei pontban vannak megadva. Végül a példa egy újabb bekezdést ad hozzá, és összegzi a sorok számát a szövegdobozban.
use aspose\slides\NullableBool;
use aspose\slides\Paragraph;
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
use aspose\slides\TextAutofitType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 400, 200);
$textFrame = $shape->getTextFrame();
$textFrame->getTextFrameFormat()->setWrapText(NullableBool::True);
$textFrame->getTextFrameFormat()->setAutofitType(TextAutofitType::None);
$paragraph = $textFrame->getParagraphs()->get_Item(0);
$paragraph->getParagraphFormat()->getDefaultPortionFormat()->setFontHeight(20);
$paragraph->setText("This text demonstrates how automatic wrapping changes the number of rendered lines.");
echo "Original width: " . java_values($paragraph->getLinesCount()) . PHP_EOL;
$shape->setWidth(150);
echo "Narrower shape: " . java_values($paragraph->getLinesCount()) . PHP_EOL;
$paragraph->setText("Short text.");
echo "Shorter text: " . java_values($paragraph->getLinesCount()) . PHP_EOL;
$secondParagraph = new Paragraph();
$secondParagraph->setText("Another paragraph.");
$secondParagraph->getParagraphFormat()->getDefaultPortionFormat()->setFontHeight(20);
$textFrame->getParagraphs()->add($secondParagraph);
$totalLineCount = 0;
for ($i = 0; $i < java_values($textFrame->getParagraphs()->getCount()); $i++) {
$currentParagraph = $textFrame->getParagraphs()->get_Item($i);
$totalLineCount += java_values($currentParagraph->getLinesCount());
}
echo "Total lines in the text frame: " . $totalLineCount . PHP_EOL;
} finally {
$presentation->dispose();
}
Ezzel a szöveggel és ezekkel a méretekkel a szűkítés növeli a sorok számát, míg a rövid szövegre való cserélés csökkenti azt. A pontos számlálás a betűtípus elérhetőségétől, helyettesítésétől, betűmérettől, margóktól, behúzásoktól, tördeléstől és az autofit beállításoktól függ. A célkörnyezethez szánt betűtípusok és elrendezési beállítások használata ajánlott sablon ellenőrzésekor.
A sorok száma önmagában nem határozza meg, hogy a szöveg túlnyúlik-e a tárolóján. A rendelkezésre álló magasság, a sormagasságok, a bekezdés- és sorköz, valamint az autofit viselkedés is számít; még egyetlen sor is túllépheti a rendelkezésre álló szélességet, ha a tördelés le van tiltva.
Bekezdéses tartalom importálása és exportálása
HTML szöveg importálása bekezdésekbe
Használja a ParagraphCollection::addFromHtml metódust HTML jelölőnyelv átalakításához bekezdésekké és részekké egy szövegdobozban.
- Hozzon létre egy Presentation osztálypéldányt.
- Szerezzen egy diát, és adj egy AutoShape elemet.
- Szerezze meg a forma TextFrame objektumát, és törölje az alapértelmezett bekezdést.
- Olvassa be a forrás HTML fájlt.
- Adja át a HTML karakterláncot a ParagraphCollection::addFromHtml metódusnak.
- Mentse el a módosított prezentációt.
Ez a PHP példa HTML-t importál egy szövegdobozba:
use aspose\slides\FillType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shapeWidth = java_values($presentation->getSlideSize()->getSize()->getWidth()) - 20;
$shapeHeight = java_values($presentation->getSlideSize()->getSize()->getHeight()) - 20;
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, $shapeWidth, $shapeHeight);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getTextFrame()->getParagraphs()->clear();
$html = file_get_contents("file.html");
if ($html !== false) {
$shape->getTextFrame()->getParagraphs()->addFromHtml($html);
$presentation->save("html_text.pptx", SaveFormat::Pptx);
} else {
echo "The HTML file could not be read.";
}
} finally {
$presentation->dispose();
}
Bekezdésszöveg exportálása HTML-be
Használja a ParagraphCollection::exportToHtml metódust a kiválasztott bekezdés-tartomány HTML-ként való exportálásához.
- Hozzon létre egy Presentation osztálypéldányt, és töltse be a kívánt prezentációt.
- Szerezze meg a diát, és keresse meg azt az AutoShape elemet, amely a szöveget tartalmazza.
- Szerezze meg a forma TextFrame objektumát.
- Hívja meg a ParagraphCollection::exportToHtml metódust a kezdő bekezdés indexével és az exportálandó bekezdések számával.
- Írja a kapott HTML karakterláncot egy fájlba.
Ez a PHP példa az első szöveges alakzat összes bekezdését exportálja:
use aspose\slides\Presentation;
$presentation = new Presentation("ExportingHTMLText.pptx");
try {
$shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
$textFrame = $shape->getTextFrame();
if (!java_is_null($textFrame)) {
$paragraphs = $textFrame->getParagraphs();
$html = $paragraphs->exportToHtml(0, $paragraphs->getCount(), null);
if (file_put_contents("paragraphs.html", $html) === false) {
echo "The HTML file could not be written.";
}
} else {
echo "The first shape does not contain a text frame.";
}
} else {
echo "The first shape is not a text shape.";
}
} finally {
$presentation->dispose();
}
Bekezdés megjelenítése képként
A Paragraph::getImage közvetlenül rendereli az egyes bekezdést, és egy IImage objektumot ad vissza. A végeredményt mentse fájlba vagy adatfolyamba a IImage::save segítségével. Nem szükséges a tartalmazó alakzatot renderelni vagy a bitmapet manuálisan kivágni.
A Paragraph::getImage null‑t adhat vissza, ha a bekezdés nem található meg a szülőgyűjteményben, nincs érvényes renderelési határa, vagy nem renderelhető. Ellenőrizze az eredményt a mentés előtt, és a kép használata után szabadítsa fel.
Bekezdés renderelése alapértelmezett méretarányban
Tegyük fel, hogy van egy sample.pptx nevű prezentációs fájlunk egyetlen diával, ahol az első alakzat egy három bekezdést tartalmazó szövegdoboz.

Az alábbi PHP példa a második bekezdést rendeli a szokásos szöveges alakzatba alapértelmezett méretarányban, és a visszakapott képet PNG formátumban menti. A finally blokk biztosítja, hogy a kép helyesen legyen felszabadítva.
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$presentation = new Presentation("sample.pptx");
try {
$shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
$textFrame = $shape->getTextFrame();
if (!java_is_null($textFrame) && java_values($textFrame->getParagraphs()->getCount()) > 1) {
$paragraph = $textFrame->getParagraphs()->get_Item(1);
$paragraphImage = $paragraph->getImage();
if (!java_is_null($paragraphImage)) {
try {
$paragraphImage->save("paragraph.png", ImageFormat::Png);
} finally {
$paragraphImage->dispose();
}
} else {
echo "The paragraph could not be rendered.";
}
} else {
echo "The expected paragraph was not found.";
}
} else {
echo "The first shape is not a text shape.";
}
} finally {
$presentation->dispose();
}
Az eredmény:

Bekezdés renderelése táblázatcellában méretezéssel
Használja a Paragraph::getImage túlterhelést, amely elfogadja a $scaleX és $scaleY paramétereket a vízszintes és függőleges méretarány beállításához. Az alábbi PHP példa egy táblázatot hoz létre, a bekezdést az első cellájában kétszeres szélesség és magasság mellett rendereli, és PNG képként menti az eredményt.
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$scaleX = 2;
$scaleY = 2;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$table = $slide->getShapes()->addTable(50, 50, array(300), array(80));
$paragraph = $table->get_Item(0, 0)->getTextFrame()->getParagraphs()->get_Item(0);
$paragraph->setText("Text in a table cell");
$paragraphImage = $paragraph->getImage($scaleX, $scaleY);
if (!java_is_null($paragraphImage)) {
try {
$paragraphImage->save("table_paragraph.png", ImageFormat::Png);
} finally {
$paragraphImage->dispose();
}
} else {
echo "The paragraph could not be rendered.";
}
} finally {
$presentation->dispose();
}
Az 1 méretarány megtartja az adott tengely alapértelmezett képpontméretét. Például a 2 mindkét tényezőnél két‑szoros szélességű és magasságú képet eredményez, ami négyszer annyi képpontot jelent. A nagyobb tényezők általában élesebb szöveget adnak a zoomoláshoz vagy a nagy felbontású kimenethez, de növelik a memóriahasználatot és a fájlméretet. Az 1‑nél kisebb tényezők kisebb, kevésbé részletes képeket eredményeznek. Az arányok megtartásához használjon egyenlő tényezőket; a különböző vízszintes és függőleges tényezők függetlenül nyújtják a képet.
A forma teljes renderelése a Shape::getImage segítségével akkor hasznos, amikor a kimenetnek tartalmaznia kell a forma kitöltését, szegélyét vagy egyéb vizuális kontextusát. Egy csak bekezdés‑képhez használja a Paragraph::getImage metódust.
GYIK
Teljesen le lehet tiltani a sortörést egy szövegdobozon belül?
Igen. Állítsa a TextFrameFormat::setWrapText értékét a tördelés letiltásához, így a sorok nem törnek meg a szövegdoboz szélén.
Hogyan lehet lekérni egy adott bekezdés pontos dián lévő határait?
Használja a Paragraph::getRect metódust a bekezdés körülhatároló téglalap lekéréséhez. A Portion::getRect egyetlen rész határait adja vissza.
Hol van vezérelve a bekezdés igazítása (balra, jobbra, középre vagy sorkizárás)?
A ParagraphFormat::setAlignment bekezdés‑szintű beállítás, amely a teljes bekezdésre vonatkozik, függetlenül az egyes részek formázásától.
A különböző betűméretű részek függőleges központosításához lásd a Align Fonts Within a Line cikket.
Be lehet állítani a helyesírás-nyelvet a bekezdés egy részére?
Igen. Állítsa be a BasePortionFormat::setLanguageId értékét az egyes részeknél, így egy bekezdés több nyelvet is tartalmazhat.