Szövegmezők kezelése prezentációkban Androidon
Bevezetés
A diákon található szövegek általában szövegmezőkben vagy alakzatokban vannak. Ezért egy szöveg hozzáadásához a diára szövegmezőt kell létrehozni, majd a szövegmezőbe szöveget helyezni. Az Aspose.Slides for Android via Java biztosítja a IAutoShape felületet, amely lehetővé teszi szöveget tartalmazó alakzat hozzáadását.
Info
Az Aspose.Slides emellett biztosítja az IShape felületet, amely lehetővé teszi alakzatok hozzáadását a diákhoz. Azonban nem minden, aIShape felületen keresztül hozzáadott alakzat képes szöveget tartalmazni. Azonban a IAutoShape felületen keresztül hozzáadott alakzatok tartalmazhatnak szöveget.
Megjegyzés
Ezért, ha olyan alakzattal dolgozik, amelyhez szöveget szeretne hozzáadni, érdemes ellenőrizni és megerősíteni, hogy azIAutoShape felületen keresztül lett átalakítva. csak ekkor lesz lehetősége a IAutoShape alatti TextFrame tulajdonsággal dolgozni. Tekintse meg a Update Text szekciót ezen az oldalon.
Szövegmező létrehozása egy dián
A szövegmező létrehozásához egy dián kövesse ezeket a lépéseket:
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen referenciát az újonnan létrehozott prezentáció első diájához.
- Adj hozzá egy IAutoShape objektumot, amelynek a ShapeType értéke
Rectangle, a megadott pozícióban a dián, és szerezze meg az újonnan hozzáadottIAutoShapeobjektum referenciáját. - Adj egy
TextFrametulajdonságot azIAutoShapeobjektumhoz, amely szöveget tartalmaz. Az alábbi példában ezt a szöveget adtuk hozzá: Aspose TextBox - Végül írja ki a PPTX fájlt a
Presentationobjektumon keresztül.
Ez a Java kód – a fenti lépések megvalósítása – megmutatja, hogyan adhat szöveget egy diához:
// Presentation példányosítása
Presentation pres = new Presentation();
try {
// Az első diát kapja meg a prezentációban
ISlide sld = pres.getSlides().get_Item(0);
// AutoShape hozzáadása típus Rectangle beállítással
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// TextFrame hozzáadása a Rectangle-hez
ashp.addTextFrame(" ");
// A szövegkeret elérése
ITextFrame txtFrame = ashp.getTextFrame();
// Paragraph objektum létrehozása a szövegkerethez
IParagraph para = txtFrame.getParagraphs().get_Item(0);
// Portion objektum létrehozása a bekezdéshez
IPortion portion = para.getPortions().get_Item(0);
// Szöveg beállítása
portion.setText("Aspose TextBox");
// A prezentáció mentése a lemezre
pres.save("TextBox_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Szövegmező alakzat ellenőrzése
Az Aspose.Slides a isTextBox metódust biztosítja a IAutoShape felületen, amely lehetővé teszi az alakzatok vizsgálatát és a szövegmezők azonosítását.

Ez a Java kód megmutatja, hogyan ellenőrizhető, hogy egy alakzat szövegmezőként lett-e létrehozva:
Presentation presentation = new Presentation("sample.pptx");
try {
ForEach.shape(presentation, (shape, slide, index) -> {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
System.out.println(autoShape.isTextBox() ? "shape is a text box" : "shape is not a text box");
}
});
} finally {
presentation.dispose();
}
Vegye figyelembe, hogy ha egyszerűen egy auto-shape‑t ad hozzá a IShapeCollection felület addAutoShape metódusával, az auto-shape isTextBox metódusa false értéket ad vissza. Azonban ha szöveget ad hozzá az auto-shape‑hez az addTextFrame vagy a setText metódus segítségével, a isTextBox tulajdonság true értéket ad vissza.
Presentation presentation = new Presentation();
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape1 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 40);
// shape1.isTextBox() false értéket ad vissza
shape1.addTextFrame("shape 1");
// shape1.isTextBox() true értéket ad vissza
IAutoShape shape2 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 110, 100, 40);
// shape2.isTextBox() false értéket ad vissza
shape2.getTextFrame().setText("shape 2");
// shape2.isTextBox() true értéket ad vissza
IAutoShape shape3 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 210, 100, 40);
// shape3.isTextBox() false értéket ad vissza
shape3.addTextFrame("");
// shape3.isTextBox() false értéket ad vissza
IAutoShape shape4 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 310, 100, 40);
// shape4.isTextBox() false értéket ad vissza
shape4.getTextFrame().setText("");
// shape4.isTextBox() false értéket ad vissza
Oszlopok hozzáadása egy szövegmezőhöz
Az Aspose.Slides a ColumnCount és a ColumnSpacing tulajdonságokat (az ITextFrameFormat felületen és a TextFrameFormat osztályon keresztül) biztosítja, amelyek lehetővé teszik oszlopok hozzáadását a szövegmezőkhöz. Megadhatja a szövegmező oszlopainak számát, és pontban megadhatja az oszlopok közötti távolságot.
Presentation pres = new Presentation();
try {
// Az első diát kapja meg a prezentációban
ISlide slide = pres.getSlides().get_Item(0);
// AutoShape hozzáadása típus Rectangle beállítással
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// TextFrame hozzáadása a Rectangle-hez
aShape.addTextFrame("All these columns are limited to be within a single text container -- " +
"you can add or delete text and the new or remaining text automatically adjusts " +
"itself to flow within the container. You cannot have text flow from one container " +
"to other though -- we told you PowerPoint's column options for text are limited!");
// A TextFrame szövegformátumát kapja meg
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// Megadja a oszlopok számát a TextFrame-ben
format.setColumnCount(3);
// Megadja az oszlopok közötti távolságot
format.setColumnSpacing(10);
// A prezentáció mentése
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Oszlopok hozzáadása a Szövegkerethez
Az Aspose.Slides for Android via Java biztosítja a ColumnCount tulajdonságot (az ITextFrameFormat felületen), amely lehetővé teszi oszlopok hozzáadását a szövegkeretekhez. Ezzel a tulajdonsággal megadhatja a kívánt oszlopszámot a szövegkeretben.
String outPptxFileName = "ColumnsTest.pptx";
Presentation pres = new Presentation();
try {
IAutoShape shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.getTextFrame().getTextFrameFormat();
format.setColumnCount(2);
shape1.getTextFrame().setText("All these columns are forced to stay within a single text container -- " +
"you can add or delete text - and the new or remaining text automatically adjusts " +
"itself to stay within the container. You cannot have text spill over from one container " +
"to other, though -- because PowerPoint's column options for text are limited!");
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(Double.NaN == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test != null) test.dispose();
}
format.setColumnSpacing(20);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test1 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test1.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test1 != null) test1.dispose();
}
format.setColumnCount(3);
format.setColumnSpacing(15);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test2 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test2.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(15 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test2 != null) test2.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Szöveg frissítése
Az Aspose.Slides lehetővé teszi a szövegmezőben vagy a teljes prezentációban lévő összes szöveg módosítását vagy frissítését.
Presentation pres = new Presentation("text.pptx");
try {
for (ISlide slide : pres.getSlides())
{
for (IShape shape : slide.getShapes())
{
if (shape instanceof IAutoShape) //Ellenőrzi, hogy az alakzat támogatja-e a szövegkeretet (IAutoShape).
{
IAutoShape autoShape = (IAutoShape)shape;
for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) //Végigiterál a szövegkeret bekezdésein
{
for (IPortion portion : paragraph.getPortions()) //Végigiterál a bekezdés minden részén
{
portion.setText(portion.getText().replace("years", "months")); //Módosítja a szöveget
portion.getPortionFormat().setFontBold(NullableBool.True); //Módosítja a formázást
}
}
}
}
}
//Mentés a módosított prezentációt
pres.save("text-changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Szövegmező hozzáadása hiperhivatkozással
Hiperhivatkozást szúrhat be egy szövegmezőbe. Amikor a szövegmezőre kattintanak, a felhasználók a hivatkozás megnyitására lesznek irányítva.
A hivatkozást tartalmazó szövegmező hozzáadásához kövesse ezeket a lépéseket:
- Hozzon létre egy példányt a
Presentationosztályból. - Szerezzen referenciát az újonnan létrehozott prezentáció első diájához.
- Adj hozzá egy
AutoShapeobjektumot, amelynek aShapeTypeértékeRectangle, a megadott pozícióban a dián, és szerezze meg az újonnan hozzáadott AutoShape objektum referenciáját. - Adj egy
TextFrame‑et azAutoShapeobjektumhoz, amely alapértelmezett szövegként a Aspose TextBox szöveget tartalmazza. - Hozza létre az
IHyperlinkManagerosztályt. - Rendelje hozzá az
IHyperlinkManagerobjektumot a HyperlinkClick tulajdonáshoz, amely aTextFramekívánt részéhez van társítva. - Végül írja ki a PPTX fájlt a
Presentationobjektumon keresztül.
Ez a Java kód – a fenti lépések megvalósítása – megmutatja, hogyan adhat szövegmezőt hiperhivatkozással egy diához:
// PPTX-et képviselő Presentation osztály példányosítása
Presentation pres = new Presentation();
try {
// Az első diát kapja meg a prezentációban
ISlide slide = pres.getSlides().get_Item(0);
// AutoShape objektum hozzáadása, típus Rectangle beállítással
IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// Az alakzat átkonvertálása AutoShape-re
IAutoShape pptxAutoShape = (IAutoShape)shape;
// Az AutoShape-hez tartozó ITextFrame tulajdonság elérése
pptxAutoShape.addTextFrame("");
ITextFrame textFrame = pptxAutoShape.getTextFrame();
// Szöveg hozzáadása a kerethez
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// A szövegrész hiperhivatkozásának beállítása
IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// A PPTX prezentáció mentése
pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
GYIK
Mi a különbség a szövegmező és a szöveghelyőrző között a mesterdiák használatakor?
Egy placeholder örökli a stílust/pozíciót a master diától, és felülírható a layouts diáknál, míg egy szabályos szövegmező egy önálló objektum egy adott dián, és nem változik, ha a layoutot megváltoztatja.
Hogyan végezhetek tömeges szövegcsere műveletet a prezentáción anélkül, hogy a diagramok, táblázatok és SmartArt szövegét módosítanám?
Korlátozza az iterációt azokra az auto-shape‑kre, amelyek rendelkeznek szövegkerettel, és hagyja ki a beágyazott objektumokat (charts, tables, SmartArt) azzal, hogy külön gyűjteményeken iterál, vagy egyszerűen kihagyja ezeket az objektumtípusokat.