Szövegdobozok kezelése prezentációkban JavaScript használatával
Bevezetés
A diákon a szövegek általában szövegdobozokban vagy alakzatokban találhatók. Ezért egy szöveg hozzáadásához egy diára szövegdobozt kell hozzáadni, majd szöveget helyezni a szövegdobozba. Az Aspose.Slides for Node.js via Java a AutoShape osztályt biztosítja, amely lehetővé teszi, hogy olyan alakzatot adjunk hozzá, amely szöveget tartalmaz.
Info
Az Aspose.Slides emellett a Shape osztályt is biztosítja, amely lehetővé teszi alakzatok hozzáadását a diákhoz. Azonban nem minden, aShape osztályon keresztül hozzáadott alakzat képes szöveget tárolni. Azonban a AutoShape osztályon keresztül hozzáadott alakzatok szöveget tartalmazhatnak.
Megjegyzés
Ezért, amikor egy olyan alakzattal dolgozunk, amelyhez szöveget szeretnénk hozzáadni, ellenőrizni és megerősíteni kell, hogy az aAutoShape osztályon keresztül lett létrehozva. Csak ezután tudunk a TextFrame segítségével dolgozni, amely a AutoShape tulajdonsága. Lásd a Update Text szekciót ezen az oldalon.
Szövegdoboz létrehozása a dián
Szövegdoboz létrehozásához egy dián, kövesse az alábbi 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.
- Adjon hozzá egy AutoShape objektumot a ShapeType
Rectangleértékre állítva a dián egy megadott pozícióban, és szerezzen referenciát az újonnan hozzáadottAutoShapeobjektumhoz. TextFrametulajdonságot adjon hozzá azAutoShapeobjektumhoz, 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 JavaScript kód – amely a fenti lépéseket valósítja meg – megmutatja, hogyan adhat szöveget egy diához:
// Létrehozza a Presentation példányt
var pres = new aspose.slides.Presentation();
try {
// Lekéri a prezentáció első diáját
var sld = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape-et, amelynek típusa Rectangle
var ashp = sld.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 150, 75, 150, 50);
// Hozzáad egy TextFrame-et a Rectangle-hez
ashp.addTextFrame(" ");
// Eléri a szövegkeretet
var txtFrame = ashp.getTextFrame();
// Létrehozza a Paragraph objektumot a szövegkerethez
var para = txtFrame.getParagraphs().get_Item(0);
// Létrehozza a Portion objektumot a bekezdéshez
var portion = para.getPortions().get_Item(0);
// Beállítja a szöveget
portion.setText("Aspose TextBox");
// Mentés a lemezre
pres.save("TextBox_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Szövegdoboz alakzat ellenőrzése
Az Aspose.Slides a isTextBox metódust a AutoShape osztályból biztosítja, amely lehetővé teszi az alakzatok vizsgálatát és a szövegdobozok azonosítását.

Ez a JavaScript kód megmutatja, hogyan ellenőrizze, hogy egy alakzat szövegdobozként lett-e létrehozva:
var presentation = new aspose.slides.Presentation("sample.pptx");
try {
java.callStaticMethodSync("ForEach", "shape", presentation, (shape, slide, index) -> {
if (java.instanceOf(shape, "com.aspose.slides.AutoShape")) {
var autoShape = shape;
console.log(autoShape.isTextBox() ? "shape is a text box" : "shape is not a text box");
}
});
} finally {
presentation.dispose();
}
Vegye figyelembe, hogy ha egyszerűen egy automatikus alakzatot ad hozzá a addAutoShape metódussal a ShapeCollection osztályból, az automatikus alakzat isTextBox metódusa false értéket ad vissza. Azonban ha szöveget ad hozzá az automatikus alakzathoz a addTextFrame vagy a setText metódussal, akkor az isTextBox tulajdonság true értéket ad.
var presentation = new aspose.slides.Presentation();
var slide = presentation.getSlides().get_Item(0);
var shape1 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 40);
// shape1.isTextBox() false értéket ad vissza
shape1.addTextFrame("shape 1");
// shape1.isTextBox() true értéket ad vissza
var shape2 = slide.getShapes().addAutoShape(aspose.slides.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
var shape3 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 210, 100, 40);
// shape3.isTextBox() false értéket ad vissza
shape3.addTextFrame("");
// shape3.isTextBox() false értéket ad vissza
var shape4 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 310, 100, 40);
// shape4.isTextBox() false értéket ad vissza
shape4.getTextFrame().setText("");
// shape4.isTextBox() false értéket ad vissza
Oszlop hozzáadása szövegdobozban
Az Aspose.Slides a setColumnCount és a setColumnSpacing metódusokat a TextFrameFormat osztályból biztosítja, amelyek lehetővé teszik oszlopok hozzáadását a szövegdobozokhoz. Megadhatja a szövegdobozban lévő oszlopok számát, valamint a pontban megadott oszlopok közötti távolságot.
var pres = new aspose.slides.Presentation();
try {
// Lekéri a prezentáció első diáját
var slide = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape-et, amelynek típusa Rectangle
var aShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 100, 100, 300, 300);
// Hozzáad egy TextFrame-et 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!"));
// Lekéri a TextFrame szövegformátumát
var 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);
// Mentés a prezentációra
pres.save("ColumnCount.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Oszlop hozzáadása szövegkeretben
Az Aspose.Slides for Node.js via Java a setColumnCount metódust a TextFrameFormat osztályból biztosítja, amely lehetővé teszi oszlopok hozzáadását szövegkeretekhez. Ezen tulajdonság segítségével megadhatja a kívánt oszlopszámot egy szövegkeretben.
var outPptxFileName = "ColumnsTest.pptx";
var pres = new aspose.slides.Presentation();
try {
var shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 100, 100, 300, 300);
var format = 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, aspose.slides.SaveFormat.Pptx);
var test = new aspose.slides.Presentation(outPptxFileName);
try {
var autoShape = test.getSlides().get_Item(0).getShapes().get_Item(0);
java.callStaticMethodSync("Assert", "assertTrue", 2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
java.callStaticMethodSync("Assert", "assertTrue", java.getStaticFieldValue("java.lang.Double", "NaN") == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test != null) {
test.dispose();
}
}
format.setColumnSpacing(20);
pres.save(outPptxFileName, aspose.slides.SaveFormat.Pptx);
var test1 = new aspose.slides.Presentation(outPptxFileName);
try {
var autoShape = test1.getSlides().get_Item(0).getShapes().get_Item(0);
java.callStaticMethodSync("Assert", "assertTrue", 2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
java.callStaticMethodSync("Assert", "assertTrue", 20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test1 != null) {
test1.dispose();
}
}
format.setColumnCount(3);
format.setColumnSpacing(15);
pres.save(outPptxFileName, aspose.slides.SaveFormat.Pptx);
var test2 = new aspose.slides.Presentation(outPptxFileName);
try {
var autoShape = test2.getSlides().get_Item(0).getShapes().get_Item(0);
java.callStaticMethodSync("Assert", "assertTrue", 3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
java.callStaticMethodSync("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, hogy megváltoztassa vagy frissítse a szövegdobozban vagy a prezentációban lévő összes szöveget.
Ez a JavaScript kód bemutat egy műveletet, amelyben a prezentáció összes szövege frissül vagy módosul:
var pres = new aspose.slides.Presentation("text.pptx");
try {
for (let s = 0; s < pres.getSlides().size(); s++) {
let slide = pres.getSlides().get_Item(s);
for (let i = 0; i < slide.getShapes().size(); i++) {
let shape = slide.getShapes().get_Item(i);
// Ellenőrzi, hogy a forma támogatja-e a szövegkeretet (IAutoShape).
if (java.instanceOf(shape, "com.aspose.slides.AutoShape")) {
var autoShape = shape;
// Végigiterál a szövegkeret bekezdésein
for (let j = 0; j < autoShape.getTextFrame().getParagraphs().getCount(); j++) {
let paragraph = autoShape.getTextFrame().getParagraphs().get_Item(j);
// Végigiterál a bekezdés minden részén
for (let k = 0; k < paragraph.getPortions().getCount(); k++) {
let portion = paragraph.getPortions().get_Item(k);
portion.setText(portion.getText().replace("years", "months"));// Módosítja a szöveget
portion.getPortionFormat().setFontBold(java.newByte(aspose.slides.NullableBool.True));// Módosítja a formázást
}
}
}
}
}
// Mentse a módosított prezentációt
pres.save("text-changed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Szövegdoboz hozzáadása hiperhivatkozással
Linket szúrhat be egy szövegdobozba. Amikor a szövegdobozt rákattintják, a felhasználók a linket nyitják meg.
Egy linket tartalmazó szövegdoboz hozzáadásához kövesse az alábbi 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.
AutoShapeobjektumot adjon hozzá, aShapeType-otRectangleértékre állítva a dián egy megadott pozícióban, és szerezzen referenciát az újonnan hozzáadott AutoShape objektumhoz.TextFrame-et adjon hozzá azAutoShapeobjektumhoz, amely alapértelmezett szövegként Aspose TextBox-t tartalmaz.- Példányosítsa a
HyperlinkManagerosztályt. - Rendelje hozzá a
HyperlinkManagerobjektumot a HyperlinkClick tulajdonsághoz, 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 JavaScript kód – amely a fenti lépéseket valósítja meg – megmutatja, hogyan adhat szövegdobozt hiperhivatkozással egy diára:
// Létrehozza a Presentation osztály egy példányát, amely PPTX-et jelképez
var pres = new aspose.slides.Presentation();
try {
// Lekéri a prezentáció első diáját
var slide = pres.getSlides().get_Item(0);
// Hozzáad egy AutoShape objektumot, amelynek típusa Rectangle
var shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 150, 150, 150, 50);
// Átkastálja a formát AutoShape-re
var pptxAutoShape = shape;
// Eléri az AutoShape-hez kapcsolódó ITextFrame tulajdonságot
pptxAutoShape.addTextFrame("");
var textFrame = pptxAutoShape.getTextFrame();
// Hozzáad szöveget a kerethez
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// Beállítja a hiperhivatkozást a rész szövegéhez
var hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// Mentés a PPTX prezentációt
pres.save("hLink_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Mi a különbség a szövegdoboz és a szöveghelytartó között mesterszláid használatakor?
A placeholder örökli a stílust/pozíciót a master diáról, és felülírható a layouts oldalakon, míg egy szabályos szövegdoboz egy önálló objektum egy adott dián, és nem változik, ha elrendezést vált.
Hogyan hajthatok végre tömeges szövegcserét a teljes prezentációban anélkül, hogy érinteném a diagramok, táblázatok és SmartArt szövegét?
Korlátozza az iterációt a szövegkerettel rendelkező auto-alakzatokra, és zárja ki a beágyazott objektumokat (charts, tables, SmartArt) úgy, hogy külön bejárja azok gyűjteményeit vagy kihagyja ezeket az objektumtípusokat.