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

Áttekintés

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

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

Minta szöveg

A szó szerinti szöveg vagy reguláris kifejezés találatainak kereséséhez és kiemeléséhez tekintse meg a Search and Replace Text oldalt.

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

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

A következő kódrészlet bemutatja, hogyan állítható be a háttérszín a teljes bekezdés esetén:

import com.aspose.slides.*;
import java.awt.Color;

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

    // Állítsa be a kiemelési színt a teljes bekezdéshez.
    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 bemutatja, hogyan állítható be a háttérszín féligzsúzott betűtípussal rendelkező szövegrétegek esetén:

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 kiemelési színt a szövegrészhez.
            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

Az IParagraphFormat.setAlignment metódussal állítható be a bekezdés igazítása egy szövegkereten belül. Az érték lehet középre, balra, jobbra, sorkizárt stb.

A következő kódrészlet bemutatja, hogyan igazítható a bekezdés a középre:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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ága a IBasePortionFormat.getFillFormat által kapott szín alfa komponensén keresztül szabályozható. Az alábbi példákban a alpha = 50 egy 0–255 skálán lévő ARGB alfa-csatorna érték, nem átlátszósági százalék.

Az alábbi kódrészlet bemutatja, hogyan alkalmazható átlátszóság a teljes bekezdés esetén:

import com.aspose.slides.*;
import java.awt.Color;

int alpha = 50;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 bemutatja, hogyan alkalmazható átlátszóság féligzsúzott betűtípussal rendelkező szövegrétegek esetén:

import com.aspose.slides.*;
import java.awt.Color;

int alpha = 50;

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

Karakter távolság beállítása a szöveghez

Az IBasePortionFormat.setSpacing metódussal növelhető vagy csökkenthető a karakterek közötti távolság egy szövegdobozban.

Az alábbi Java kód bemutatja, hogyan növelhető a karaktertávolság a teljes bekezdés esetén:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 karaktertávolság a bekezdésben

Az alábbi kódrészlet bemutatja, hogyan növelhető a karaktertávolság féligzsúzott betűtípussal rendelkező szövegrétegek esetén:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 karaktertávolság a szövegrétegekben

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

Egyes esetekben az Aspose.Slides által renderelt szöveg valamivel szorosabbnak tűnhet, mint a PowerPoint-ban megjelenő ugyanaz a szöveg. Ennek oka lehet, hogy a PowerPoint bizonyos betűtípusoknál figyelmen kívül hagyja a kerning adatokat, még akkor is, ha a betűtípus tartalmaz érvényes kerning információt, és a kerning engedélyezve van a PowerPoint beállításaiban.

Ahhoz, hogy az ilyen esetekben a renderelt kimenet közelebb legyen a PowerPoint-hoz, letilthatja a kerninget a kedvezett betűtípust használó szövegrétegeknél. Állítsa a IBasePortionFormat.setKerningMinimalSize értékét a tényleges betűméretnél jóval nagyobbra:

import com.aspose.slides.*;

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

Szöveg betűtulajdonságainak kezelése

A betűtulajdonságok beállíthatók a bekezdés szintjén az IParagraphFormat.getDefaultPortionFormat segítségével, vagy egyedi részekre az IPortionFormat segítségével.

Az alábbi kód beállítja a betűtípust és a szövegstílust a teljes bekezdésre: alkalmazza a betűméretet, félkövér, dőlt, pontozott aláhúzást és a Times New Roman betűtípust az összes részre a bekezdésben.

import com.aspose.slides.*;

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

    // Állítsa be a bekezdés betű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 betűtulajdonságok a bekezdésben

Az alábbi kódrészlet hasonló tulajdonságokat alkalmaz féligzsúzott betűtípussal rendelkező szövegrétegek esetén:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 betűtulajdonságokat a szövegrészhez.
            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 betűtulajdonságok a szövegrétegekben

Szöveg forgatásának beállítása

Az ITextFrameFormat.setTextVerticalType metódussal állítható be egy előre definiált szövegtorientáció egy alakzat belsejében.

Az alábbi kódrészlet a szövegorientációt a formában Vertical270-re állítja, ami a szöveget 90 fokkal balra forgatja:

import com.aspose.slides.*;

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

Egyéni forgatás beállítása szövegkeretekhez

Az ITextFrameFormat.setRotationAngle metódussal egyedi forgatási szöget állíthat be egy ITextFrame számára.

Az alábbi kódrészlet a szövegkeretet 3 fokkal jobbra forgatja az alakzaton belül:

import com.aspose.slides.*;

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

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

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

Az eredmény:

Az egyéni szöveg forgatása

Bekezdések sor távolságának beállítása

Az Aspose.Slides biztosítja a IParagraphFormat.setSpaceAfter, IParagraphFormat.setSpaceBefore, és IParagraphFormat.setSpaceWithin metódusokat a bekezdés távolságok szabályozásához. Ezek a tulajdonságok a következők szerint használhatók:

  • Pozitív értékkel a sor távolságot a sor magasságának százalékában adhatja meg.
  • Negatív értékkel a sor távolságot pontban adhatja meg.

Az alábbi kódrészlet bemutatja, hogyan adható meg a sor távolság a bekezdésen belül:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 sor távolság a bekezdésben

Automatikus illeszkedés típusának beállítása szövegkeretekhez

Az ITextFrameFormat.setAutofitType határozza meg, hogyan viselkedik a szöveg, ha meghaladja a konténer határait. Ezzel szabályozható, hogy a szöveg zsugorodjon, túllépjen, vagy az alakzat mérete automatikusan változzon.

import com.aspose.slides.*;

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

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

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

Szövegkeretek rögzítésének beállítása

Az ITextFrameFormat.setAnchoringType meghatározza, hogyan helyezkedik el a szöveg függőlegesen egy alakzat belsejében, például a tetején, közepén vagy alján.

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 egy bekezdés tabulátorállásainak konfigurálásához.

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 az IBasePortionFormat.setLanguageId metódust, amely lehetővé teszi a helyesírás- és nyelvtanellenőrzés nyelvének beállítását egy szövegrétegre. A helyesírási nyelv határozza meg, hogy a PowerPoint milyen nyelvet használ a helyesírás- és nyelvtani ellenőrzéshez.

Az alábbi kódrészlet bemutatja, hogyan állítható be a helyesírási nyelv egy szövegrétegre:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 a prezentáció betöltése vagy létrehozása során létrehozott szöveg alapértelmezett nyelvének meghatározásához.

import com.aspose.slides.*;

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

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

    // Új téglalap alakzat hozzáadása 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

Alapértelmezett szövegformázás alkalmazásához a prezentáció szintjén használja az IPresentation.getDefaultTextStyle metódust.

Az alábbi kódrészlet bemutatja, hogyan állítható be egy alapértelmezett félkövér betűtípus 14 pt mérettel minden dián lévő szöveghez egy új prezentációban.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    // A legfelső szintű bekezdésformátum lekérése.
    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 nagybetűs hatással

PowerPointban a All Caps betűhatás alkalmazása nagybetűkkel jeleníti meg a szöveget a dián, még akkor is, ha az eredetileg kisbetűkkel lett beírva. Amikor az Aspose.Slides-szel ilyen szövegréteget kérdez ki, a könyvtár pontosan úgy adja vissza a szöveget, ahogy azt beírták. A megjelenített szöveghez való illesztéshez ellenőrizze a TextCapType értékét, és amennyiben All, konvertálja a visszakapott karakterláncot nagybetűssé.

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

A nagybetűs hatás

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample2.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.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 szöveg módosításához egy dián található táblázatban használja az ITable interfészt. Iteráljon a cellákon, és frissítse az egyes cellákat az ICell.getTextFrame segítségével, a bekezdésformázást pedig az IParagraph.getParagraphFormat segítségével.

Hogyan lehet színátmenetes színt alkalmazni a szövegre egy PowerPoint dián?

A színátmenetes szín alkalmazásához a szövegre használja az IBasePortionFormat.getFillFormat metódust. Állítsa be az IFillFormat.setFillType metódus értékét a FillType.Gradient típusra, majd konfigurálja a színátmenet állomásait, irányát és átlátszóságát.