Java에서 텍스트 형식 지정 방법

Java에서 텍스트 형식 지정 방법

Aspose.Slides FOSS for Java는 PortionFormat 클래스를 통해 세밀한 텍스트 서식을 제공합니다. Portion는 텍스트의 가장 작은 독립 단위이며, 단락 내의 단일 서식 실행에 매핑됩니다. 이 가이드는 프레젠테이션의 텍스트에 굵게, 기울임꼴, 글꼴 크기 및 색상 서식을 적용하는 방법을 보여줍니다.

단계별 가이드

1단계: Maven 의존성 추가

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

2단계: 텍스트 프레임이 있는 도형 추가

텍스트를 포맷하기 전에, 도형은 TextFrame을 포함해야 합니다. shape.addTextFrame()를 사용하여 하나를 만드세요.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Default text: will be formatted");
    prs.save("output.pptx", SaveFormat.PPTX);
}

3단계: TextFrame에 액세스

shape.addTextFrame()TextFrame 객체를 반환합니다. 또한 shape.getTextFrame()을 통해 나중에 검색할 수 있습니다.

ITextFrame tf = shape.getTextFrame();          // if the frame already exists
ITextFrame tf = shape.addTextFrame("");        // creates a new frame

A TextFrame 은(는) Paragraph 객체들의 목록(tf.getParagraphs())을 포함합니다. 각 Paragraph 은(는) Portion 객체(paragraph.getPortions())를 포함합니다.


4단계: 굵게 및 기울임꼴 서식 적용

portionFormat.setFontBold()portionFormat.setFontItalic()를 사용하십시오. 이러한 메서드는 NullableBool.TRUE, NullableBool.FALSE 또는 NullableBool.NOT_DEFINED(마스터에서 상속)를 허용합니다.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Bold and italic text");

    IPortionFormat fmt = tf.getParagraphs().get(0)
        .getPortions().get(0).getPortionFormat();
    fmt.setFontBold(NullableBool.TRUE);
    fmt.setFontItalic(NullableBool.TRUE);

    prs.save("bold-italic.pptx", SaveFormat.PPTX);
}

5단계: 글꼴 크기 및 색상 설정

크기(포인트)에는 portionFormat.setFontHeight()를 설정하고 색상에는 getFillFormat()를 사용하십시오.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Large corporate-blue heading");

    IPortionFormat fmt = tf.getParagraphs().get(0)
        .getPortions().get(0).getPortionFormat();
    fmt.setFontHeight(32);                          // 32pt font
    fmt.setFontBold(NullableBool.TRUE);
    fmt.getFillFormat().setFillType(FillType.SOLID);
    fmt.getFillFormat().getSolidFillColor().setColor(
        Color.fromArgb(255, 0, 70, 127)
    );

    prs.save("colored-text.pptx", SaveFormat.PPTX);
}

Color.fromArgb(alpha, red, green, blue)은 각 채널에 대해 0-255 값을 허용합니다.


6단계: 하나의 단락에 여러 부분

단일 단락은 서로 다른 서식을 가진 여러 부분을 포함할 수 있습니다. 새 Portion를 단락의 getPortions() 컬렉션에 추가하십시오:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 600, 100
    );
    ITextFrame tf = shape.addTextFrame("");  // start with empty frame

    IParagraph paragraph = tf.getParagraphs().get(0);

    // First portion: normal text
    IPortion portion1 = paragraph.getPortions().get(0);
    portion1.setText("Normal text followed by ");
    portion1.getPortionFormat().setFontHeight(20);

    // Second portion: bold red text
    Portion portion2 = new Portion("bold red text");
    portion2.getPortionFormat().setFontHeight(20);
    portion2.getPortionFormat().setFontBold(NullableBool.TRUE);
    portion2.getPortionFormat().getFillFormat().setFillType(FillType.SOLID);
    portion2.getPortionFormat().getFillFormat().getSolidFillColor().setColor(
        Color.fromArgb(255, 200, 0, 0)
    );
    paragraph.getPortions().add(portion2);

    prs.save("mixed-format.pptx", SaveFormat.PPTX);
}

일반적인 문제 및 해결 방법

텍스트 색상을 설정한 후에도 검은색으로 표시됩니다

색상을 할당하기 전에 getFillFormat().setFillType(FillType.SOLID)가 호출되었는지 확인하십시오. 채우기 유형을 설정하지 않으면 색상 변경이 효과가 없을 수 있습니다.

NullableBool.TRUEtrue

portionFormat.setFontBold()NullableBool.TRUE을 기대하며, Java의 true이 아닙니다. 불리언을 전달하면 메서드가 NullableBool 열거형을 기대하기 때문에 컴파일 오류가 발생합니다.

저장된 파일에 글꼴이 표시되지 않음

setLatinFont() 메서드는 라틴 글꼴 패밀리를 설정합니다. 설정되지 않은 경우 프레젠테이션 테마 글꼴이 사용됩니다. 사용자 정의 글꼴은 임베드되거나 뷰잉 머신에 있어야 합니다.


자주 묻는 질문

글꼴 패밀리를 어떻게 변경하나요?

설정 portionFormat.setLatinFont():

fmt.setLatinFont(new FontData("Arial"));

FontData는 폰트 패밀리 이름을 문자열로 받아들입니다.

단락 정렬을 어떻게 설정하나요?

사용 paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

tf.getParagraphs().get(0).getParagraphFormat()
    .setAlignment(TextAlignment.CENTER);

지원되는 값: LEFT, CENTER, RIGHT, JUSTIFY.

줄 간격을 어떻게 설정하나요?

paragraphFormat.setSpaceBefore() (문단 앞에 점) 또는 paragraphFormat.setSpaceAfter() (문단 뒤에 점)을 사용하십시오:

tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12);  // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6);    // 6pt after

관련 항목

 한국어