كيفية تنسيق النص في Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat الفئة A Portion هو أصغر وحدة مستقلة من النص؛ فإنه خرائط إلى تنسيق واحد يحدث في إطار الفقرة.هذا الدليل يعرض كيفية تطبيق حريص، الإيطالية، حجم الخط، وتكوين الألوان على النص في عرض.
خطوة بخطوة دليل
الخطوة 1: إضافة الاعتماد على Maven
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.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);
}الخطوة الثالثة: الوصول إلى 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()).
الخطوة 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.TRUE vs true
portionFormat.setFontBold() توقعات NullableBool.TRUE,لا يُعرف جاوا 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