چگونه متن را در جاوا قالب‌بندی کنیم

چگونه متن را در جاوا قالب‌بندی کنیم

Aspose.Slides FOSS for Java قابلیت قالب‌بندی دقیق متن را از طریق کلاس PortionFormat فراهم می‌کند. یک Portion کوچک‌ترین واحد مستقل متن است؛ این واحد به یک اجرای قالب‌بندی منفرد درون یک پاراگراف نگاشت می‌شود. این راهنما نشان می‌دهد چگونه قالب‌بندی bold، italic، font size و color را بر متن در یک ارائه اعمال کنید.

راهنمای گام به گام

مرحله 1: افزودن وابستگی Maven

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

مرحله ۲: افزودن یک شکل با قاب متن

قبل از قالب‌بندی متن، یک شکل باید شامل 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);
}

مرحله ۳: دسترسی به TextFrame

shape.addTextFrame() شیء TextFrame را برمی‌گرداند. همچنین می‌توانید آن را بعداً از طریق shape.getTextFrame() بازیابی کنید.

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

یک TextFrame شامل یک فهرست از اشیاء Paragraph (tf.getParagraphs()) است. هر Paragraph شامل اشیاء Portion (paragraph.getPortions()) است.


مرحله ۴: اعمال قالب‌بندی بولد و ایتالیک

از portionFormat.setFontBold() و portionFormat.setFontItalic() استفاده کنید. این روش‌ها NullableBool.TRUE، NullableBool.FALSE یا NullableBool.NOT_DEFINED (از master ارث می‌برند) را می‌پذیرند.

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.TRUE در مقابل true

portionFormat.setFontBold() انتظار دارد NullableBool.TRUE، نه true جاوا. ارسال یک مقدار بولی باعث خطای کامپایل می‌شود زیرا متد انتظار دارد enum 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

همچنین ببینید

 فارسی