Szövegmezők kezelése prezentációkban Java használatával
Bevezetés
A diákon lévő szövegek általában szövegmezőkben vagy alakzatokban találhatók. Ezért egy szöveg hozzáadásához a diára egy szövegmezőt kell hozzáadni, majd szöveget helyezni a szövegmezőbe. Az Aspose.Slides for Java a IAutoShape interfészt biztosítja, amely lehetővé teszi, hogy szöveget tartalmazó alakzatot adjunk hozzá.
Info
Az Aspose.Slides a IShape interfészt is biztosítja, amely lehetővé teszi alakzatok hozzáadását a diákhoz. Azonban nem minden, azIShape interfészen keresztül hozzáadott alakzat képes szöveget tárolni. Azonban a IAutoShape interfészen keresztül hozzáadott alakzatok tartalmazhatnak szöveget.
Note
Ezért, amikor olyan alakzattal dolgozunk, amelyhez szöveget akarunk hozzáadni, érdemes ellenőrizni és megerősíteni, hogy azIAutoShape interfészen keresztül lett átkonvertálva. Csak ezután fogsz tudni a TextFrame felületével dolgozni, amely az IAutoShape alatti tulajdonság. Lásd az oldalon található Update Text szekciót.
Szövegmező létrehozása egy dián
Egy szövegmező létrehozásához egy dián, kövesd az alábbi lépéseket:
- Hozd létre a Presentation osztály egy példányát.
- Szerezz hivatkozást az újonnan létrehozott prezentáció első diájára.
- Adj hozzá egy IAutoShape objektumot a ShapeType
Rectangleértékre beállítva, a dián egy megadott pozícióban, és szerezz hivatkozást az újonnan hozzáadottIAutoShapeobjektumra. TextFrametulajdonságot add hozzá azIAutoShapeobjektumhoz, amely szöveget fog tartalmazni. Az alábbi példában ezt a szöveget adtuk hozzá: Aspose TextBox- Végül írd 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 adhatunk szöveget egy diához:
// Példányosítja a Presentation objektumot
Presentation pres = new Presentation();
try {
// Lekéri a prezentáció első diáját
ISlide sld = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape-ot, amelynek típusa Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Szövegkeretet ad a téglalaphoz
ashp.addTextFrame(" ");
// Eléri a szövegkeretet
ITextFrame txtFrame = ashp.getTextFrame();
// Létrehozza a Paragraph objektumot a szövegkerethez
IParagraph para = txtFrame.getParagraphs().get_Item(0);
// Létrehozza a Portion objektumot a bekezdéshez
IPortion portion = para.getPortions().get_Item(0);
// Beállítja a szöveget
portion.setText("Aspose TextBox");
// Mentse a prezentációt 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 interfészen keresztül, 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őrizheted, 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();
}
Vedd figyelembe, hogy ha egyszerűen egy autoshape-et adsz hozzá az addAutoShape metódus segítségével a IShapeCollection interfészen keresztül, az autoshape isTextBox metódusa false értéket ad vissza. Azonban miután szöveget adsz hozzá az autoshape-hez az addTextFrame vagy a setText metódus használatával, az 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-t ad vissza
shape1.addTextFrame("shape 1");
// shape1.isTextBox() true-t ad vissza
IAutoShape shape2 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 110, 100, 40);
// shape2.isTextBox() false-t ad vissza
shape2.getTextFrame().setText("shape 2");
// shape2.isTextBox() true-t ad vissza
IAutoShape shape3 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 210, 100, 40);
// shape3.isTextBox() false-t ad vissza
shape3.addTextFrame("");
// shape3.isTextBox() false-t ad vissza
IAutoShape shape4 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 310, 100, 40);
// shape4.isTextBox() false-t ad vissza
shape4.getTextFrame().setText("");
// shape4.isTextBox() false-t ad vissza
Oszlopok hozzáadása egy szövegmezőhöz
Az Aspose.Slides a ColumnCount és ColumnSpacing tulajdonságokat (a ITextFrameFormat interfész és a TextFrameFormat osztály részeként) biztosítja, amelyek lehetővé teszik oszlopok hozzáadását a szövegmezőkhöz. Megadhatod a szövegmező oszlopainak számát, valamint a oszlopok közötti távolságot pontokban.
Ez a Java kód bemutatja a leírt műveletet:
Presentation pres = new Presentation();
try {
// Lekéri a prezentáció első diáját
ISlide slide = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape-ot, amelynek típusa Rectangle
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Szövegkeretet ad a téglalaphoz
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!");
// Lekéri a TextFrame szövegformátumát
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// Megadja az oszlopok számát a TextFrame-ben
format.setColumnCount(3);
// Megadja az oszlopok közötti távolságot
format.setColumnSpacing(10);
// Mentse a prezentációt
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Oszlopok hozzáadása egy szövegkerethez
Az Aspose.Slides for Java a ColumnCount tulajdonságot (a ITextFrameFormat interfész részeként) biztosítja, amely lehetővé teszi oszlopok hozzáadását a szövegkeretekhez. Ezzel a tulajdonsággal megadhatod a kívánt oszlopszámot egy szövegkeretben.
Ez a Java kód megmutatja, hogyan adhatunk hozzá oszlopot egy 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 egy szövegmezőben vagy a teljes prezentációban található szövegek módosítását vagy frissítését.
Ez a Java kód bemutat egy olyan műveletet, ahol a prezentáció összes szövege frissül vagy megváltozik:
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()) //A szövegkeret bekezdésein iterál
{
for (IPortion portion : paragraph.getPortions()) //Iterá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
}
}
}
}
}
//Elmenti 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
Beszúrhatsz egy hivatkozást egy szövegmezőbe. Amikor a szövegmezőre kattintanak, a felhasználók a hivatkozás megnyitására lesznek irányítva.
Egy linket tartalmazó szövegmező hozzáadásához kövesd az alábbi lépéseket:
Presentationosztály egy példányának létrehozása.- Szerezz hivatkozást az újonnan létrehozott prezentáció első diájára.
AutoShapeobjektum hozzáadása aShapeTypeRectangleértékre állítva, a dián egy meghatározott pozícióban, és szerezz hivatkozást az újonnan hozzáadott AutoShape objektumra.TextFramehozzáadása azAutoShapeobjektumhoz, amely alapértelmezett szövegként Aspose TextBox-t tartalmaz.- Példányosítsd az
IHyperlinkManagerosztályt. - Rendeld hozzá az
IHyperlinkManagerobjektumot a HyperlinkClick tulajdonsághoz, amely aTextFramekívánt részéhez van társítva. - Végül írd 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 adhatunk szövegmezőt hiperhivatkozással egy diára:
// PPTX-et képviselő Presentation osztály példányosítása
Presentation pres = new Presentation();
try {
// Lekéri a prezentáció első diáját
ISlide slide = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape objektumot, amelynek típusa Rectangle
IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// Átkonvertálja az alakzatot AutoShape-ra
IAutoShape pptxAutoShape = (IAutoShape)shape;
// Eléri az AutoShape-hoz társított ITextFrame tulajdonságot
pptxAutoShape.addTextFrame("");
ITextFrame textFrame = pptxAutoShape.getTextFrame();
// Szöveget ad a kerethez
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// Beállítja a hiperhivatkozást a részlet szövegéhez
IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// Mentse a PPTX prezentációt
pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Mi a különbség a szövegmező és a szöveghelykitöltő között a mesterdiák használatakor?
A placeholder a master stílusát/pozícióját örökli, és a layoutok során felülírható, míg egy szabályos szövegmező egy adott dián önálló objektum, és nem változik, amikor layoutot váltasz.
Hogyan végezhetek tömeges szövegcserét a prezentációban anélkül, hogy a diagramok, táblázatok és SmartArt szövegét megérinteném?
Korlátozd az iterációt azokra az autoshape-ekre, amelyek szövegkerettel rendelkeznek, és vedd ki a beágyazott objektumokat (diagramok, táblázatok, SmartArt) úgy, hogy a gyűjteményeiket külön járod be, vagy egyszerűen átléped ezeket az objektumtípusokat.