Prezentáció szövegének formázása Java-ban

Áttekintés

Ez a cikk bemutatja, hogyan formázható szöveg PowerPoint és OpenDocument prezentációkban az Aspose.Slides for Java használatával. Kitér a kiemelésre, háttérszínekre, átlátszóságra, karaktertávolságra, betűtípus‑tulajdonságokra, forgatásra, bekezdés‑távolságra, automatikus illesztésre, szöveg‑horgonyzásra, tabulátor‑állomásokra és nyelvi beállításokra.

Az alábbi példákban a „sample.pptx” nevű fájlt használjuk, amely az első dián egyetlen szövegdobozt tartalmaz a következő szöveggel:

Minta szöveg

Szöveg kiemelése

Használja az ITextFrame.highlightText metódust, ha egy szövegdobozban egy adott mintának megfelelő szöveget kell kiemelni. A metódus kiemelési színt alkalmaz a megtalált szövegrészekre, és a TextSearchOptions segítségével szabályozható a keresés módja, például csak teljes szavakra való egyezés.

Az alábbi kódrészlet kiemeli a “try” összes előfordulását, majd csak a teljes “to” szót.

Presentation presentation = new Presentation("sample.pptx");
try {
    // Szerezze meg az első alakzatot az első diáról.
    IAutoShape shape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    // Emelje ki a "try" szót az alakzatban.
    shape.getTextFrame().highlightText("try", Color.LIGHT_GRAY);

    TextSearchOptions searchOptions = new TextSearchOptions();
    searchOptions.setWholeWordsOnly(true);

    // Emelje ki a "to" szót az alakzatban.
    shape.getTextFrame().highlightText("to", Color.MAGENTA, searchOptions, null);

    presentation.save("highlighted_text.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A kiemelt szöveg

Szöveg kiemelése reguláris kifejezésekkel

Az ITextFrame.highlightRegex metódus a reguláris kifejezéssel található egyezéseket emeli ki. Java‑ban ez az API az ITextFrame felületén érhető el.

Az alábbi kódrészlet kiemeli az összes olyan szót, amely hétt vagy több karaktert tartalmaz:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape shape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    java.util.regex.Pattern regex = java.util.regex.Pattern.compile("\\b[^\\s]{7,}\\b");

    // Emelje ki a hét vagy több karakterből álló összes szót.
    shape.getTextFrame().highlightRegex(regex, Color.YELLOW, null);

    presentation.save("highlighted_text_using_regex.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A reguláris kifejezéssel kiemelt szöveg

Szöveg háttérszínének beállítása

Használja az IParagraphFormat.getDefaultPortionFormat metódust, ha a bekezdés alapértelmezett kiemelési színét szeretné beállítani, vagy az IBasePortionFormat.getHighlightColor metódust egyedi szövegrétegekhez.

Az alábbi kódrészlet a teljes bekezdés háttérszínét állítja be:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Állítsa be a teljes bekezdés kiemelési színét.
    paragraph.getParagraphFormat().getDefaultPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);

    presentation.save("gray_paragraph.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A szürke bekezdés

Az alábbi kódrészlet félkövér betűtípussal rendelkező szövegrétegek háttérszínét mutatja be:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
                // Állítsa be a szövegréteg kiemelési színét.
                portion.getPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);
        }
    }

    presentation.save("gray_text_portions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A szürke szövegrétegek

Szöveg bekezdések igazítása

Használja az IParagraphFormat.setAlignment metódust a szövegdobozon belüli bekezdés‑igazításhoz. Az érték lehet középre, balra, jobbra, sorkizárás stb.

Az alábbi kódrészlet a bekezdést középre igazítja:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Állítsa be a bekezdés igazítását középre.
    paragraph.getParagraphFormat().setAlignment(TextAlignment.Center);

    presentation.save("aligned_paragraph.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

Az igazított bekezdés

Szöveg átlátszóságának beállítása

A szöveg átlátszóságát a IBasePortionFormat.getFillFormat‑hez rendelt szín alfa komponense szabályozza. Az alábbi példákban az alpha = 50 egy ARGB alfa‑csatorna érték 0‑255 skálán, nem százalékos átlátszóság.

Az alábbi kódrészlet a teljes bekezdés átlátszóságát állítja be:

int alpha = 50;

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Állítsa be a szöveg kitöltőszínét átlátszó színre.
    paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
    paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));

    presentation.save("transparent_paragraph.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

Az átlátszó bekezdés

Az alábbi kódrészlet félkövér betűtípusú szövegrétegek átlátszóságát mutatja be:

int alpha = 50;

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Állítsa be a szövegréteg átlátszóságát.
            portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
            portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));
        }
    }

    presentation.save("transparent_text_portions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

Az átlátszó szövegrétegek

Karaktertávolság beállítása szövegnél

Használja az IBasePortionFormat.setSpacing metódust a karakterek közti távolság növelésére vagy csökkentésére egy szövegdobozban.

Az alábbi Java‑kód a teljes bekezdés karaktertávolságát növeli:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Megjegyzés: Negatív értékek használata a karaktertávolság összenyomásához.
    paragraph.getParagraphFormat().getDefaultPortionFormat().setSpacing(3); // Karaktertávolság növelése.

    presentation.save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A bekezdés karaktertávolsága

Az alábbi kódrészlet félkövér betűtípusú szövegrétegek karaktertávolságát növeli:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Megjegyzés: Negatív értékek használata a karaktertávolság összenyomásához.
            portion.getPortionFormat().setSpacing(3); // Karaktertávolság növelése.
        }
    }

    presentation.save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A szövegrétegek karaktertávolsága

Kerning letiltása egyes betűtípusoknál

Bizonyos esetekben az Aspose.Slides által renderelt szöveg kissé szorosabb lehet, mint a PowerPoint‑ban megjelenített változat. Ennek oka, hogy a PowerPoint bizonyos betűtípusoknál figyelmen kívül hagyja a kerning adatokat, még ha a betűtípus tartalmazza is a megfelelő kerning információkat és a PowerPoint beállításaiban engedélyezve van.

Az ilyen esetekben a renderelt kimenet PowerPoint‑hoz való közelebb hozásához letilthatja a kerninget a problémás betűtípust használó szövegrétegeknél. Állítsa be az IBasePortionFormat.setKerningMinimalSize értékét a tényleges betűméretnél lényegesen nagyobbra:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    String targetFont = "Roboto";

    for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) {
        for (IPortion portion : paragraph.getPortions()) {
            IPortionFormat portionFormat = portion.getPortionFormat();

            if ((portionFormat.getLatinFont() != null &&
                 portionFormat.getLatinFont().getFontName().equals(targetFont)) ||
                (portionFormat.getEastAsianFont() != null &&
                 portionFormat.getEastAsianFont().getFontName().equals(targetFont)) ||
                (portionFormat.getComplexScriptFont() != null &&
                 portionFormat.getComplexScriptFont().getFontName().equals(targetFont))) {
                portionFormat.setKerningMinimalSize(100);
            }
        }
    }

    presentation.save("output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Ez a beállítás megakadályozza a kerning alkalmazását a megfelelő szövegrétegekre, és segíthet az Aspose.Slides renderelésének a PowerPoint vizuális kimenetével való egyeztetésében azoknál a betűtípusoknál, amelyeket ez a PowerPoint‑specifikus viselkedés érint.

Szöveg betűtípus‑tulajdonságainak kezelése

A betűtípus‑tulajdonságok beállíthatók bekezdés szinten az IParagraphFormat.getDefaultPortionFormat vagy egyedi részekre az IPortionFormat segítségével.

Az alábbi kód a teljes bekezdés betűtípusát és stílusát állítja be: betűméret, félkövér, dőlt, pontozott aláhúzás és a Times New Roman betűtípus minden részére.

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Állítsa be a bekezdés betűtípus tulajdonságait.
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontHeight(12);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontBold(NullableBool.True);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontItalic(NullableBool.True);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(new FontData("Times New Roman"));

    presentation.save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A bekezdés betűtípus‑tulajdonságai

Az alábbi kódrészlet hasonló tulajdonságokat alkalmaz félkövér betűtípusú szövegrétegekre:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Állítsa be a szövegréteg betűtípus tulajdonságait.
            portion.getPortionFormat().setFontHeight(13);
            portion.getPortionFormat().setFontItalic(NullableBool.True);
            portion.getPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
            portion.getPortionFormat().setLatinFont(new FontData("Times New Roman"));
        }
    }

    presentation.save("font_properties_for_text_portions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A szövegrétegek betűtípus‑tulajdonságai

Szöveg forgatása

Használja az ITextFrameFormat.setTextVerticalType metódust, ha előre definiált szövegorientációt szeretne beállítani egy alakzaton belül.

Az alábbi kódrészlet a szövegorientációt Vertical270‑re állítja, ami 90 fokkal óramutatóval ellenkező irányba forgatja a szöveget:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    autoShape.getTextFrame().getTextFrameFormat().setTextVerticalType(TextVerticalType.Vertical270);

    presentation.save("text_rotation.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A szöveg forgatása

Egyedi forgatás szövegdobozoknál

Használja az ITextFrameFormat.setRotationAngle metódust, ha egyedi forgatási szöget szeretne beállítani egy ITextFrame számára.

Az alábbi kódrészlet a szövegdobozt 3 fokkal óramutatóval egyirányban forgatja az alakzaton belül:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    autoShape.getTextFrame().getTextFrameFormat().setRotationAngle(3);

    presentation.save("custom_text_rotation.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

Az egyedi szövegforgatás

Bekezdés sortávolságának beállítása

Az Aspose.Slides a IParagraphFormat.setSpaceAfter, IParagraphFormat.setSpaceBefore és IParagraphFormat.setSpaceWithin metódusokkal szabályozza a bekezdés távolságait. Ezek a tulajdonságok a következőképpen használhatók:

  • Pozitív érték esetén a sortávolság a sormagasság százalékában adható meg.
  • Negatív érték esetén a sortávolság pontban (pt) adható meg.

Az alábbi kódrészlet bemutatja a sortávolság megadását a bekezdésen belül:

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    paragraph.getParagraphFormat().setSpaceWithin(200);

    presentation.save("line_spacing.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A bekezdés sortávolsága

Automatikus illesztés típusa szövegdobozoknál

Az ITextFrameFormat.setAutofitType határozza meg, hogyan viselkedjen a szöveg, ha meghaladja a tárolójának határait. Ezzel szabályozható, hogy a szöveg zsugorodjon, túlcsorduljon vagy a forma automatikusan átméreteződjön.

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    autoShape.getTextFrame().getTextFrameFormat().setAutofitType(TextAutofitType.Shape);

    presentation.save("autofit_type.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Szövegdoboz horgonyának beállítása

Az ITextFrameFormat.setAnchoringType határozza meg, hogyan helyezkedjen el a szöveg függőlegesen egy alakzaton belül, például felül, középen vagy alul.

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    autoShape.getTextFrame().getTextFrameFormat().setAnchoringType(TextAnchorType.Bottom);

    presentation.save("text_anchor.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Szöveg tabuláció beállítása

Használja az IParagraphFormat.setDefaultTabSize és az IParagraphFormat.getTabs metódusokat a tabulátorállomások konfigurálásához egy bekezdésben.

Presentation presentation = new Presentation("sample.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IParagraph 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();
}

Az eredmény:

A bekezdés tabulátorai

Ellenőrző nyelv beállítása

Az Aspose.Slides biztosítja a IBasePortionFormat.setLanguageId metódust, amely lehetővé teszi a helyesírás‑ és nyelvtan‑ellenőrzés nyelvének beállítását egy szövegréteghez. A nyelv határozza meg, hogy milyen nyelven történik a helyesírás‑ és nyelvtani ellenőrzés a PowerPointban.

Az alábbi kódrészlet megmutatja, hogyan állítsa be a helyesírás‑nyelvet egy szövegréteghez:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
    paragraph.getPortions().clear();

    FontData font = new FontData("SimSun");

    Portion textPortion = new Portion();
    textPortion.getPortionFormat().setComplexScriptFont(font);
    textPortion.getPortionFormat().setEastAsianFont(font);
    textPortion.getPortionFormat().setLatinFont(font);

    // Állítsa be a helyesírási nyelv azonosítóját.
    textPortion.getPortionFormat().setLanguageId("zh-CN");

    textPortion.setText("1.");
    paragraph.getPortions().add(textPortion);

    presentation.save("proofing_language.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Alapértelmezett nyelv beállítása

Használja a LoadOptions.setDefaultTextLanguage metódust, ha az előadás betöltése vagy létrehozása közben létrehozott szöveg alapértelmezett nyelvét szeretné definiálni.

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");

Presentation presentation = new Presentation(loadOptions);
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adjunk hozzá egy új téglalap alakzatot szöveggel.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
    shape.getTextFrame().setText("Sample text");

    // Ellenőrizze az első rész nyelvét.
    IPortion portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
    System.out.println(portion.getPortionFormat().getLanguageId());
} finally {
    presentation.dispose();
}

Alapértelmezett szövegstílus beállítása

Az előadás szintjén az alapértelmezett szövegformázás alkalmazásához használja az IPresentation.getDefaultTextStyle metódust.

Az alábbi kódrészlet egy új előadásban minden dián a szöveget 14 pt méretű, félkövér betűtípussal állítja be alapértelmezettként.

Presentation presentation = new Presentation();
try {
    // Szerezze meg a legfelső szintű bekezdésformátumot.
    IParagraphFormat paragraphFormat = presentation.getDefaultTextStyle().getLevel(0);

    if (paragraphFormat != null) {
        paragraphFormat.getDefaultPortionFormat().setFontHeight(14);
        paragraphFormat.getDefaultPortionFormat().setFontBold(NullableBool.True);
    }

    presentation.save("default_text_style.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Szöveg kinyerése All‑Caps hatással

PowerPoint‑ban az All Caps betűhatás alkalmazása nagybetűs megjelenést kölcsönöz a szövegnek, még ha eredetileg kisbetűvel lett beírva is. Az Aspose.Slides‑szal történő kinyeréskor a könyvtár a ténylegesen beírt szöveget adja vissza. A megjelenített szöveghez való igazításhoz ellenőrizze a TextCapType értékét, és ha All, akkor alakítsa a visszakapott karakterláncot nagybetűssé.

Tegyük fel, hogy a sample2.pptx első diáján a következő szövegdoboz található.

Az All Caps hatás

Az alábbi kódrészlet bemutatja, hogyan nyerje ki a All Caps hatással rendelkező szöveget:

Presentation presentation = new Presentation("sample2.pptx");
try {
    IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
    IPortion textPortion = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);

    System.out.println("Original text: " + textPortion.getText());

    IPortionFormatEffectiveData textFormat = textPortion.getPortionFormat().getEffective();
    if (textFormat.getTextCapType() == TextCapType.All) {
        String text = textPortion.getText().toUpperCase();
        System.out.println("All-Caps effect: " + text);
    }
} finally {
    presentation.dispose();
}

Kimenet:

Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!

GYIK

Hogyan módosítható a szöveg egy dián lévő táblázatban?

A táblázat szövegének módosításához használja az ITable felületet. Iteráljon a cellákon, és frissítse a cellákat az ICell.getTextFrame segítségével, a bekezdésformázást pedig az IParagraph.getParagraphFormat metódussal.

Hogyan alkalmazhatunk színátmenetet a szövegre egy PowerPoint dián?

A színátmenethez használja az IBasePortionFormat.getFillFormat metódust. Állítsa be az IFillFormat.setFillType értékét a FillType.Gradient típusra, majd konfigurálja a gradient‑állomásokat, az irányt és az átlátszóságot.