مدیریت پاراگراف‌های متن PowerPoint در JavaScript

مقدمه

Aspose.Slides تمام کلاس‌ها و مجموعه‌های مورد نیاز شما برای کار با متن‌ها، پاراگراف‌ها و بخش‌های PowerPoint در Java را فراهم می‌کند.

  • Aspose.Slides کلاس TextFrame را فراهم می‌کند تا بتوانید اشیائی که یک پاراگراف را نمایندگی می‌کنند اضافه کنید. یک شیء TextFame می‌تواند یک یا چند پاراگراف داشته باشد (هر پاراگراف از طریق یک برگشت‌خط ایجاد می‌شود).
  • Aspose.Slides کلاس Paragraph را فراهم می‌کند تا بتوانید اشیائی که بخش‌ها را نمایندگی می‌کنند اضافه کنید. یک شیء Paragraph می‌تواند یک یا چند بخش داشته باشد (مجموعه‌ای از اشیای بخش متن).
  • Aspose.Slides کلاس Portion را فراهم می‌کند تا بتوانید اشیائی که متن‌ها و ویژگی‌های قالب‌بندی آن‌ها را نمایندگی می‌کنند اضافه کنید.

یک شیء Paragraph قادر است متونی با ویژگی‌های قالب‌بندی مختلف را از طریق اشیای زیرمجموعه Portion خود مدیریت کند.

افزودن چندین پاراگراف حاوی چندین بخش

این مراحل نشان می‌دهد چگونه یک فریم متن حاوی ۳ پاراگراف و هر پاراگراف حاوی ۳ بخش اضافه کنید:

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. یک AutoShape مستطیلی به اسلاید اضافه کنید.
  4. ITextFrame مرتبط با AutoShape را دریافت کنید.
  5. دو شیء Paragraph ایجاد کنید و آن‌ها را به مجموعه IParagraphs از TextFrame اضافه کنید.
  6. برای هر Paragraph جدید، سه شیء Portion ایجاد کنید (برای پاراگراف پیش‌فرض دو شیء Portion) و هر شیء Portion را به مجموعه IPortion هر Paragraph اضافه کنید.
  7. متنی برای هر بخش تنظیم کنید.
  8. ویژگی‌های قالب‌بندی دلخواه خود را با استفاده از ویژگی‌های قالب‌بندی موجود در شیء Portion برای هر بخش اعمال کنید.
  9. ارائه اصلاح‌شده را ذخیره کنید.

این کد Javascript پیاده‌سازی مراحل افزودن پاراگراف‌های حاوی بخش‌هاست:

// یک شیء از کلاس Presentation ایجاد می‌کند که نمایانگر یک فایل PPTX است
var pres = new aspose.slides.Presentation();
try {
    // دسترسی به اولین اسلاید
    var slide = pres.getSlides().get_Item(0);
    // افزودن یک AutoShape از نوع Rectangle
    var ashp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 150, 300, 150);
    // دسترسی به TextFrame خودکارشکل
    var tf = ashp.getTextFrame();
    // ایجاد پاراگراف‌ها و بخش‌ها با قالب‌بندی‌های متنی متفاوت
    var para0 = tf.getParagraphs().get_Item(0);
    var port01 = new aspose.slides.Portion();
    var port02 = new aspose.slides.Portion();
    para0.getPortions().add(port01);
    para0.getPortions().add(port02);
    var para1 = new aspose.slides.Paragraph();
    tf.getParagraphs().add(para1);
    var port10 = new aspose.slides.Portion();
    var port11 = new aspose.slides.Portion();
    var port12 = new aspose.slides.Portion();
    para1.getPortions().add(port10);
    para1.getPortions().add(port11);
    para1.getPortions().add(port12);
    var para2 = new aspose.slides.Paragraph();
    tf.getParagraphs().add(para2);
    var port20 = new aspose.slides.Portion();
    var port21 = new aspose.slides.Portion();
    var port22 = new aspose.slides.Portion();
    para2.getPortions().add(port20);
    para2.getPortions().add(port21);
    para2.getPortions().add(port22);
    for (var i = 0; i < 3; i++) {
        for (var j = 0; j < 3; j++) {
            var portion = tf.getParagraphs().get_Item(i).getPortions().get_Item(j);
            portion.setText("Portion0" + j);
            if (j == 0) {
                portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
                portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
                portion.getPortionFormat().setFontBold(aspose.slides.NullableBool.True);
                portion.getPortionFormat().setFontHeight(15);
            } else if (j == 1) {
                portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
                portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
                portion.getPortionFormat().setFontItalic(aspose.slides.NullableBool.True);
                portion.getPortionFormat().setFontHeight(18);
            }
        }
    }
    // نوشتن PPTX بر روی دیسک
    pres.save("multiParaPort_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

مدیریت لیست‌های نقطه‌ای پاراگراف

لیست‌های نقطه‌ای به شما کمک می‌کند تا اطلاعات را به سرعت و به‌طور مؤثر سازماندهی و ارائه دهید. پاراگراف‌های نقطه‌دار همیشه خواندن و درک آن‌ها آسان‌تر است.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. یک AutoShape به اسلاید انتخابی اضافه کنید.
  4. TextFrame خودکارشکل را دسترسی پیدا کنید.
  5. پاراگراف پیش‌فرض موجود در TextFrame را حذف کنید.
  6. اولین نمونه پاراگراف را با استفاده از کلاس Paragraph ایجاد کنید.
  7. نوع نقطه‌گذاری Type پاراگراف را به Symbol تنظیم کنید و کاراکتر نقطه را تعیین کنید.
  8. متن پاراگراف را تنظیم کنید.
  9. تورفتگی Indent پاراگراف برای نقطه را تنظیم کنید.
  10. رنگی برای نقطه تعیین کنید.
  11. ارتفاع نقطه را تنظیم کنید.
  12. پاراگراف جدید را به مجموعه پاراگراف‌های TextFrame اضافه کنید.
  13. پاراگراف دوم را اضافه کنید و مراحل ۷ تا ۱۳ را تکرار کنید.
  14. ارائه را ذخیره کنید.

این کد Javascript نشان می‌دهد چگونه یک نقطه لیست پاراگراف اضافه کنید:

// یک شی از کلاس Presentation ایجاد می‌کند که نمایانگر یک فایل PPTX است
var pres = new aspose.slides.Presentation();
try {
    // به اولین اسلاید دسترسی می‌یابد
    var slide = pres.getSlides().get_Item(0);
    // یک AutoShape اضافه می‌کند و به آن دسترسی می‌یابد
    var aShp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
    // به فریم متن AutoShape دسترسی می‌یابد
    var txtFrm = aShp.getTextFrame();
    // پاراگراف پیش‌فرض را حذف می‌کند
    txtFrm.getParagraphs().removeAt(0);
    // یک پاراگراف ایجاد می‌کند
    var para = new aspose.slides.Paragraph();
    // سبک و نماد نقطه‌گذاری پاراگراف را تنظیم می‌کند
    para.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
    para.getParagraphFormat().getBullet().setChar(8226);
    // متن پاراگراف را تنظیم می‌کند
    para.setText("Welcome to Aspose.Slides");
    // تورفتگی نقطه‌گذاری را تنظیم می‌کند
    para.getParagraphFormat().setIndent(25);
    // رنگ نقطه‌گذاری را تنظیم می‌کند
    para.getParagraphFormat().getBullet().getColor().setColorType(aspose.slides.ColorType.RGB);
    para.getParagraphFormat().getBullet().getColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    para.getParagraphFormat().getBullet().setBulletHardColor(aspose.slides.NullableBool.True);// مقدار IsBulletHardColor را به true تنظیم می‌کند تا از رنگ نقطه‌گذاری سفارشی استفاده شود
    // ارتفاع نقطه‌گذاری را تنظیم می‌کند
    para.getParagraphFormat().getBullet().setHeight(100);
    // پاراگراف را به فریم متن اضافه می‌کند
    txtFrm.getParagraphs().add(para);
    // پاراگراف دوم را ایجاد می‌کند
    var para2 = new aspose.slides.Paragraph();
    // نوع و سبک نقطه‌گذاری پاراگراف را تنظیم می‌کند
    para2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
    para2.getParagraphFormat().getBullet().setNumberedBulletStyle(aspose.slides.NumberedBulletStyle.BulletCircleNumWDBlackPlain);
    // متن پاراگراف را اضافه می‌کند
    para2.setText("This is numbered bullet");
    // تورفتگی نقطه‌گذاری را تنظیم می‌کند
    para2.getParagraphFormat().setIndent(25);
    para2.getParagraphFormat().getBullet().getColor().setColorType(aspose.slides.ColorType.RGB);
    para2.getParagraphFormat().getBullet().getColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    para2.getParagraphFormat().getBullet().setBulletHardColor(aspose.slides.NullableBool.True);// مقدار IsBulletHardColor را به true تنظیم می‌کند تا از رنگ نقطه‌گذاری سفارشی استفاده شود
    // ارتفاع نقطه‌گذاری را تنظیم می‌کند
    para2.getParagraphFormat().getBullet().setHeight(100);
    // پاراگراف را به فریم متن اضافه می‌کند
    txtFrm.getParagraphs().add(para2);
    // ارائه اصلاح‌شده را ذخیره می‌کند
    pres.save("Bullet_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

مدیریت نقطه‌گذاری تصویر

لیست‌های نقطه‌ای به شما کمک می‌کند تا اطلاعات را به سرعت و به‌طور مؤثر سازماندهی و ارائه دهید. پاراگراف‌های تصویری خواندن و درک آسانی دارند.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. یک AutoShape به اسلاید اضافه کنید.
  4. TextFrame خودکارشکل را دسترسی پیدا کنید.
  5. پاراگراف پیش‌فرض موجود در TextFrame را حذف کنید.
  6. اولین نمونه پاراگراف را با استفاده از کلاس Paragraph ایجاد کنید.
  7. تصویر را با استفاده از PPImage بارگذاری کنید.
  8. نوع نقطه‌گذاری را به Picture تنظیم کنید و تصویر را تعیین کنید.
  9. متن پاراگراف را تنظیم کنید.
  10. تورفتگی Indent پاراگراف برای تصویر را تنظیم کنید.
  11. رنگی برای تصویر تعیین کنید.
  12. ارتفاع تصویر را تنظیم کنید.
  13. پاراگراف جدید را به مجموعه پاراگراف‌های TextFrame اضافه کنید.
  14. پاراگراف دوم را اضافه کنید و فرآیند را بر اساس مراحل قبلی تکرار کنید.
  15. ارائه اصلاح‌شده را ذخیره کنید.

این کد Javascript نشان می‌دهد چگونه نقطه‌گذاری تصویر اضافه و مدیریت کنید:

// یک شی از کلاس Presentation ایجاد می‌کند که نمایانگر یک فایل PPTX است
var presentation = new aspose.slides.Presentation();
try {
    // به اولین اسلاید دسترسی می‌یابد
    var slide = presentation.getSlides().get_Item(0);
    // تصویر برای نقطه‌گذاری را ایجاد می‌کند
    var picture;
    var image = aspose.slides.Images.fromFile("bullets.png");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) {
            image.dispose();
        }
    }
    // یک AutoShape اضافه می‌کند و به آن دسترسی می‌یابد
    var autoShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
    // به فریم متن AutoShape دسترسی می‌یابد
    var textFrame = autoShape.getTextFrame();
    // پاراگراف پیش‌فرض را حذف می‌کند
    textFrame.getParagraphs().removeAt(0);
    // یک پاراگراف جدید ایجاد می‌کند
    var paragraph = new aspose.slides.Paragraph();
    paragraph.setText("Welcome to Aspose.Slides");
    // سبک و تصویر نقطه‌گذاری پاراگراف را تنظیم می‌کند
    paragraph.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Picture);
    paragraph.getParagraphFormat().getBullet().getPicture().setImage(picture);
    // ارتفاع نقطه‌گذاری را تنظیم می‌کند
    paragraph.getParagraphFormat().getBullet().setHeight(100);
    // پاراگراف را به فریم متن اضافه می‌کند
    textFrame.getParagraphs().add(paragraph);
    // ارائه را به عنوان فایل PPTX می‌نویسد
    presentation.save("ParagraphPictureBulletsPPTX_out.pptx", aspose.slides.SaveFormat.Pptx);
    // ارائه را به عنوان فایل PPT می‌نویسد
    presentation.save("ParagraphPictureBulletsPPT_out.ppt", aspose.slides.SaveFormat.Ppt);
} catch (e) {console.log(e);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

مدیریت نقطه‌گذاری چندسطحی

لیست‌های نقطه‌ای به شما کمک می‌کند تا اطلاعات را به سرعت و به‌طور مؤثر سازماندهی و ارائه دهید. نقطه‌گذاری چندسطحی خواندن و درک آسانی دارد.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. یک AutoShape در اسلاید جدید اضافه کنید.
  4. TextFrame خودکارشکل را دسترسی پیدا کنید.
  5. پاراگراف پیش‌فرض موجود در TextFrame را حذف کنید.
  6. اولین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و عمق را به ۰ تنظیم کنید.
  7. دومین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و عمق را به ۱ تنظیم کنید.
  8. سومین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و عمق را به ۲ تنظیم کنید.
  9. چهارمین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و عمق را به ۳ تنظیم کنید.
  10. پاراگراف‌های جدید را به مجموعه پاراگراف‌های TextFrame اضافه کنید.
  11. ارائه اصلاح‌شده را ذخیره کنید.

این کد Javascript نشان می‌دهد چگونه نقطه‌گذاری چندسطحی اضافه و مدیریت کنید:

// یک شی از کلاس Presentation ایجاد می‌کند که نمایانگر یک فایل PPTX است
var pres = new aspose.slides.Presentation();
try {
    // به اولین اسلاید دسترسی می‌یابد
    var slide = pres.getSlides().get_Item(0);
    // یک AutoShape اضافه می‌کند و به آن دسترسی می‌یابد
    var aShp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
    // به فریم متن AutoShape ایجاد شده دسترسی می‌یابد
    var text = aShp.addTextFrame("");
    // پاراگراف پیش‌فرض را پاک می‌کند
    text.getParagraphs().clear();
    // پاراگراف اول را اضافه می‌کند
    var para1 = new aspose.slides.Paragraph();
    para1.setText("Content");
    para1.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
    para1.getParagraphFormat().getBullet().setChar(8226);
    para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    // سطح نقطه‌گذاری را تنظیم می‌کند
    para1.getParagraphFormat().setDepth(0);
    // پاراگراف دوم را اضافه می‌کند
    var para2 = new aspose.slides.Paragraph();
    para2.setText("Second Level");
    para2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
    para2.getParagraphFormat().getBullet().setChar('-');
    para2.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    para2.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    // سطح نقطه‌گذاری را تنظیم می‌کند
    para2.getParagraphFormat().setDepth(1);
    // پاراگراف سوم را اضافه می‌کند
    var para3 = new aspose.slides.Paragraph();
    para3.setText("Third Level");
    para3.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
    para3.getParagraphFormat().getBullet().setChar(8226);
    para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    // سطح نقطه‌گذاری را تنظیم می‌کند
    para3.getParagraphFormat().setDepth(2);
    // پاراگراف چهارم را اضافه می‌کند
    var para4 = new aspose.slides.Paragraph();
    para4.setText("Fourth Level");
    para4.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
    para4.getParagraphFormat().getBullet().setChar('-');
    para4.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    para4.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    // سطح نقطه‌گذاری را تنظیم می‌کند
    para4.getParagraphFormat().setDepth(3);
    // پاراگراف‌ها را به مجموعه اضافه می‌کند
    text.getParagraphs().add(para1);
    text.getParagraphs().add(para2);
    text.getParagraphs().add(para3);
    text.getParagraphs().add(para4);
    // ارائه را به صورت فایل PPTX می‌نویسد
    pres.save("MultilevelBullet.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

مدیریت پاراگراف با فهرست شماره‌گذاری سفارشی

کلاس BulletFormat خاصیت NumberedBulletStartWith و سایر ویژگی‌ها را فراهم می‌کند که به شما امکان مدیریت پاراگراف‌ها با شماره‌گذاری یا قالب‌بندی سفارشی را می‌دهد.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. به اسلاید حاوی پاراگراف دسترسی پیدا کنید.
  3. یک AutoShape به اسلاید اضافه کنید.
  4. TextFrame خودکارشکل را دسترسی پیدا کنید.
  5. پاراگراف پیش‌فرض موجود در TextFrame را حذف کنید.
  6. اولین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و NumberedBulletStartWith را به ۲ تنظیم کنید.
  7. دومین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و NumberedBulletStartWith را به ۳ تنظیم کنید.
  8. سومین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید و NumberedBulletStartWith را به ۷ تنظیم کنید.
  9. پاراگراف‌های جدید را به مجموعه پاراگراف‌های TextFrame اضافه کنید.
  10. ارائه اصلاح‌شده را ذخیره کنید.

این کد Javascript نشان می‌دهد چگونه پاراگراف‌ها را با شماره‌گذاری یا قالب‌بندی سفارشی اضافه و مدیریت کنید:

var presentation = new aspose.slides.Presentation();
try {
    var shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
    // به فریم متن AutoShape ایجاد شده دسترسی می‌یابد
    var textFrame = shape.getTextFrame();
    // پاراگراف پیش‌فرض موجود را حذف می‌کند
    textFrame.getParagraphs().removeAt(0);
    // لیست اول
    var paragraph1 = new aspose.slides.Paragraph();
    paragraph1.setText("bullet 2");
    paragraph1.getParagraphFormat().setDepth(4);
    paragraph1.getParagraphFormat().getBullet().setNumberedBulletStartWith(2);
    paragraph1.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
    textFrame.getParagraphs().add(paragraph1);
    var paragraph2 = new aspose.slides.Paragraph();
    paragraph2.setText("bullet 3");
    paragraph2.getParagraphFormat().setDepth(4);
    paragraph2.getParagraphFormat().getBullet().setNumberedBulletStartWith(3);
    paragraph2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
    textFrame.getParagraphs().add(paragraph2);
    var paragraph5 = new aspose.slides.Paragraph();
    paragraph5.setText("bullet 7");
    paragraph5.getParagraphFormat().setDepth(4);
    paragraph5.getParagraphFormat().getBullet().setNumberedBulletStartWith(7);
    paragraph5.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
    textFrame.getParagraphs().add(paragraph5);
    presentation.save("SetCustomBulletsNumber-slides.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

تنظیم تورفتگی خط اول برای پاراگراف

از متد ParagraphFormat.setIndent برای کنترل تورفتگی خط اول یک پاراگراف استفاده کنید. این متد فقط خط اول را نسبت به حاشیه چپ پاراگراف جابه‌جا می‌کند. مقدار مثبت خط اول را به راست می‌برد، در حالی که بقیه خطوط همانند متن اصلی باقی می‌مانند.

زمانی که می‌خواهید کل پاراگراف را جابه‌جا کنید، از ParagraphFormat.setMarginLeft استفاده کنید. وقتی فقط خط اول را می‌خواهید جابه‌جا کنید، از ParagraphFormat.setIndent استفاده کنید.

مثال زیر چندین پاراگراف ایجاد می‌کند و مقادیر مختلف تورفتگی را برای نشان دادن تأثیر تورفتگی خط اول بر چیدمان پاراگراف اعمال می‌کند.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. اسلاید هدف را دسترسی پیدا کنید.
  3. یک AutoShape مستطیلی به اسلاید اضافه کنید.
  4. یک TextFrame خالی به شکل اضافه کنید و پاراگراف پیش‌فرض را حذف کنید.
  5. چندین پاراگراف ایجاد کنید و مقادیر مختلف Indent را برای آن‌ها تنظیم کنید.
  6. پاراگراف‌ها را به فریم متن اضافه کنید.
  7. ارائه اصلاح‌شده را ذخیره کنید.

این کد نشان می‌دهد چگونه تورفتگی پاراگراف تنظیم شود:

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let rectangleShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 420, 220);
    rectangleShape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
    rectangleShape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    rectangleShape.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "GRAY"));

    let textFrame = rectangleShape.addTextFrame("");
    textFrame.getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.Shape));
    textFrame.getParagraphs().removeAt(0);

    let firstParagraph = new aspose.slides.Paragraph();
    firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    firstParagraph.setText("No first-line indent. Wrapped lines start at the same position as the first line.");
    firstParagraph.getParagraphFormat().setMarginLeft(20);
    firstParagraph.getParagraphFormat().setIndent(0);

    let secondParagraph = new aspose.slides.Paragraph();
    secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    secondParagraph.setText("First-line indent of 20 points. The first line moves to the right, while wrapped lines remain aligned to the paragraph body.");
    secondParagraph.getParagraphFormat().setMarginLeft(20);
    secondParagraph.getParagraphFormat().setIndent(20);

    let thirdParagraph = new aspose.slides.Paragraph();
    thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    thirdParagraph.setText("First-line indent of 40 points. This paragraph shows a larger first-line offset to make the effect easier to see.");
    thirdParagraph.getParagraphFormat().setMarginLeft(20);
    thirdParagraph.getParagraphFormat().setIndent(40);

    textFrame.getParagraphs().add(firstParagraph);
    textFrame.getParagraphs().add(secondParagraph);
    textFrame.getParagraphs().add(thirdParagraph);

    presentation.save("paragraph_indent.pptx", aspose.slides.SaveFormat.Pptx);
}
finally {
    presentation.dispose();
}

نتیجه:

فاصله‌برداری خط اول پاراگراف‌ها

تنظیم تورفتگی معلق برای پاراگراف

تورفتگی معلق چیدمان پاراگرافی است که در آن خط اول نسبت به بقیه خطوط به سمت چپ شروع می‌شود. در Aspose.Slides، این اثر را با متد ParagraphFormat.setIndent ایجاد می‌کنید. مقدار منفی به Indent بدهید تا خط اول نسبت به بدنه پاراگراف به سمت چپ جابه‌جا شود.

در عمل، ParagraphFormat.setMarginLeft موقعیت چپ بدنه پاراگراف را تعیین می‌کند و ParagraphFormat.setIndent موقعیت خط اول را نسبت به آن حاشیه تعیین می‌کند. برای ایجاد تورفتگی معلق، مقدار مثبت MarginLeft و مقدار منفی Indent را تنظیم کنید.

این قالب‌بندی برای کتابشناسی‌ها، مراجع، واژه‌نامه‌ها و سایر پاراگراف‌هایی که خطوط بسته‌بندی باید زیر بدنه پاراگراف تراز شوند مفید است.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. اسلاید هدف را دسترسی پیدا کنید.
  3. یک AutoShape مستطیلی به اسلاید اضافه کنید.
  4. یک TextFrame خالی به شکل اضافه کنید و پاراگراف پیش‌فرض را حذف کنید.
  5. پاراگراف‌ها را ایجاد کنید و برای هر کدام مقدار مثبت MarginLeft تنظیم کنید.
  6. مقدار منفی Indent را برای ایجاد اثر تورفتگی معلق تنظیم کنید.
  7. پاراگراف‌ها را به فریم متن اضافه کنید.
  8. ارائه اصلاح‌شده را ذخیره کنید.

این کد نشان می‌دهد چگونه تورفتگی معلق برای پاراگراف تنظیم شود:

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let rectangleShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 420, 220);
    rectangleShape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
    rectangleShape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    rectangleShape.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "GRAY"));

    let textFrame = rectangleShape.addTextFrame("");
    textFrame.getTextFrameFormat().setAutofitType(java.newByte(aspose.slides.TextAutofitType.Shape));
    textFrame.getParagraphs().removeAt(0);

    let firstParagraph = new aspose.slides.Paragraph();
    firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    firstParagraph.setText("A hanging indent is created by combining a positive left margin with a negative indent. The first line starts to the left, while wrapped lines align with the paragraph body.");
    firstParagraph.getParagraphFormat().setMarginLeft(40);
    firstParagraph.getParagraphFormat().setIndent(-20);

    let secondParagraph = new aspose.slides.Paragraph();
    secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
    secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
    secondParagraph.setText("This second example uses a deeper hanging indent so the difference between the first line and the wrapped lines is easier to compare.");
    secondParagraph.getParagraphFormat().setMarginLeft(60);
    secondParagraph.getParagraphFormat().setIndent(-30);

    textFrame.getParagraphs().add(firstParagraph);
    textFrame.getParagraphs().add(secondParagraph);

    presentation.save("hanging_indent.pptx", aspose.slides.SaveFormat.Pptx);
}
finally {
    presentation.dispose();
}

نتیجه:

فاصله‌برداری معلق پاراگراف‌ها

مدیریت ویژگی‌های End برای پاراگراف

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. مرجع اسلاید حاوی پاراگراف را از طریق موقعیت آن دریافت کنید.
  3. یک AutoShape مستطیلی به اسلاید اضافه کنید.
  4. یک TextFrame با دو پاراگراف به مستطیل اضافه کنید.
  5. FontHeight و نوع فونت را برای پاراگراف‌ها تنظیم کنید.
  6. ویژگی‌های End را برای پاراگراف‌ها تنظیم کنید.
  7. ارائه اصلاح‌شده را به عنوان فایل PPTX ذخیره کنید.

این کد Javascript نشان می‌دهد چگونه ویژگی‌های End برای پاراگراف‌ها در PowerPoint تنظیم شود:

var pres = new aspose.slides.Presentation();
try {
    var shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 200, 250);
    var para1 = new aspose.slides.Paragraph();
    para1.getPortions().add(new aspose.slides.Portion("Sample text"));
    var para2 = new aspose.slides.Paragraph();
    para2.getPortions().add(new aspose.slides.Portion("Sample text 2"));
    var portionFormat = new aspose.slides.PortionFormat();
    portionFormat.setFontHeight(48);
    portionFormat.setLatinFont(new aspose.slides.FontData("Times New Roman"));
    para2.setEndParagraphPortionFormat(portionFormat);
    shape.getTextFrame().getParagraphs().add(para1);
    shape.getTextFrame().getParagraphs().add(para2);
    pres.save(resourcesOutputPath + "pres.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

وارد کردن متن HTML به پاراگراف‌ها

Aspose.Slides پشتیبانی پیشرفته‌ای برای وارد کردن متن HTML به پاراگراف‌ها فراهم می‌کند.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. یک AutoShape به اسلاید اضافه کنید.
  4. TextFrame خودکارشکل را اضافه و دسترسی پیدا کنید.
  5. پاراگراف پیش‌فرض موجود در TextFrame را حذف کنید.
  6. فایل HTML منبع را در یک TextReader بخوانید.
  7. اولین نمونه پاراگراف را از طریق کلاس Paragraph ایجاد کنید.
  8. محتوای فایل HTML خوانده‌شده را به ParagraphCollection فریم متن اضافه کنید.
  9. ارائه اصلاح‌شده را ذخیره کنید.

این کد Javascript پیاده‌سازی مراحل وارد کردن متون HTML در پاراگراف‌هاست:

// یک نمونهٔ خالی از ارائه ایجاد می‌کند
var pres = new aspose.slides.Presentation();
try {
    // به اسلاید پیش‌فرض اول ارائه دسترسی می‌یابد
    var slide = pres.getSlides().get_Item(0);
    // افزودن AutoShape برای جایگذاری محتوای HTML
    var ashape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, pres.getSlideSize().getSize().getWidth() - 20, pres.getSlideSize().getSize().getHeight() - 10);
    ashape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
    // افزودن فریم متن به شکل
    ashape.addTextFrame("");
    // پاک‌سازی تمام پاراگراف‌ها در فریم متنی اضافه‌شده
    ashape.getTextFrame().getParagraphs().clear();
    // بارگذاری فایل HTML با استفاده از StreamReader
    var tr = java.newInstanceSync("StreamReader", "file.html");
    // افزودن متن از StreamReader HTML به فریم متن
    ashape.getTextFrame().getParagraphs().addFromHtml(tr.readToEnd());
    // ذخیرهٔ ارائه
    pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

خروجی متن پاراگراف‌ها به HTML

Aspose.Slides پشتیبانی پیشرفته‌ای برای خروجی متون (موجود در پاراگراف‌ها) به HTML فراهم می‌کند.

  1. یک نمونه از کلاس Presentation ایجاد کنید و ارائه مورد نظر را بارگذاری کنید.
  2. از طریق شاخص، به مرجع اسلاید مربوطه دسترسی پیدا کنید.
  3. شکل حاوی متنی را که به HTML خروجی داده خواهد شد دسترسی پیدا کنید.
  4. TextFrame شکل را دسترسی پیدا کنید.
  5. یک نمونه از StreamWriter ایجاد کنید و فایل HTML جدید را اضافه کنید.
  6. یک شاخص شروع به StreamWriter بدهید و پاراگراف‌های مورد نظر را خروجی بگیرید.

این کد Javascript نشان می‌دهد چگونه متون پاراگراف‌های PowerPoint را به HTML خروجی بگیرید:

// فایل ارائه را بارگذاری می‌کند
var pres = new aspose.slides.Presentation("ExportingHTMLText.pptx");
try {
    // به اسلاید پیش‌فرض اول ارائه دسترسی می‌یابد
    var slide = pres.getSlides().get_Item(0);
    // شاخص مورد نظر
    var index = 0;
    // دسترسی به شکل اضافه‌شده
    var ashape = slide.getShapes().get_Item(index);
    // ایجاد فایل خروجی HTML
    var os = java.newInstanceSync("java.io.FileOutputStream", "output.html");
    var writer = java.newInstanceSync("java.io.OutputStreamWriter", os, "UTF-8");
    // استخراج اولین پاراگراف به صورت HTML
    // نوشتن داده‌های پاراگراف‌ها به HTML با فراهم کردن شاخص شروع پاراگراف و تعداد کل پاراگراف‌های قابل کپی
    writer.write(ashape.getTextFrame().getParagraphs().exportToHtml(0, ashape.getTextFrame().getParagraphs().getCount(), null));
    writer.close();
} catch (e) {console.log(e);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

ذخیره یک پاراگراف به عنوان تصویر

در این بخش دو مثال را بررسی می‌کنیم که نشان می‌دهند چگونه یک پاراگراف متن، که توسط کلاس Paragraph نمایندگی می‌شود، به‌صورت تصویر ذخیره شود. هر دو مثال شامل دریافت تصویر یک شکل حاوی پاراگراف با استفاده از متدهای getImage از کلاس Shape ، محاسبه مرزهای پاراگراف داخل شکل و خروجی آن به‌صورت تصویر بیت‌مپ هستند. این روش‌ها به شما امکان می‌دهند بخش‌های خاصی از متن را از ارائه‌های PowerPoint استخراج کنید و به‌صورت تصاویر جداگانه ذخیره کنید که می‌تواند در سناریوهای مختلف مفید باشد.

فرض کنیم یک فایل ارائه به نام sample.pptx با یک اسلاید داشته باشیم که اولین شکل آن یک جعبه متن شامل سه پاراگراف باشد.

کادر متن با سه پاراگراف

مثال 1

در این مثال پاراگراف دوم را به‌صورت تصویر دریافت می‌کنیم. برای این کار تصویر شکل را از اولین اسلاید ارائه استخراج کرده و سپس مرزهای پاراگراف دوم در فریم متن شکل را محاسبه می‌کنیم. سپس پاراگراف روی یک تصویر بیت‌مپ جدید بازنقاشی می‌شود و به‌صورت PNG ذخیره می‌گردد. این روش به‌ویژه زمانی مفید است که بخواهید یک پاراگراف خاص را به‌عنوان تصویر جداگانه ذخیره کنید در حالی که ابعاد و قالب‌بندی دقیق متن حفظ می‌شود.

const imageio = java.import("javax.imageio.ImageIO");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
    const firstShape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    // شکل را در حافظه به صورت بیت‌مپ ذخیره می‌کند.
    const shapeImage = firstShape.getImage();
        
    const shapeImageStream = java.newInstanceSync("java.io.ByteArrayOutputStream");
    shapeImage.save(shapeImageStream, aspose.slides.ImageFormat.Png);
    shapeImage.dispose();
    shapeImageStream.flush();
    
    // یک بیت‌مپ شکل را از حافظه می‌سازد.
    const byteBuffer = java.callMethodSync(shapeImageStream, "toByteArray");    
    const javaBytes = java.newArray("byte", Array.from(byteBuffer));
    const ByteArrayInputStream = java.import("java.io.ByteArrayInputStream");
    const shapeImageInputStream = new ByteArrayInputStream(javaBytes);
    const shapeBitmap = imageio.read(shapeImageInputStream);

    // مرزهای پاراگراف دوم را محاسبه می‌کند.
    const secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
    const paragraphRectangle = secondParagraph.getRect();

    // مختصات و اندازه تصویر خروجی را محاسبه می‌کند (حداقل اندازه - ۱×۱ پیکسل).
    const imageX = Math.floor(paragraphRectangle.getX());
    const imageY = Math.floor(paragraphRectangle.getY());
    const imageWidth = Math.max(1, Math.ceil(paragraphRectangle.getWidth()));
    const imageHeight = Math.max(1, Math.ceil(paragraphRectangle.getHeight()));

    // بیت‌مپ شکل را برش می‌دهد تا فقط بیت‌مپ پاراگراف به دست آید.
    const paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);

    const file = java.newInstanceSync("java.io.File", "paragraph.png");

    imageio.write(paragraphBitmap, "png", file);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

نتیجه:

تصویر پاراگراف

مثال 2

در این مثال، روش قبلی را با افزودن عوامل مقیاس به تصویر پاراگراف گسترش می‌دهیم. شکل از ارائه استخراج می‌شود و با عامل مقیاس 2 به‌عنوان تصویر ذخیره می‌شود. این امکان خروجی با وضوح بالاتر را هنگام خروجی‌گیری پاراگراف فراهم می‌کند. سپس مرزهای پاراگراف با در نظر گرفتن مقیاس محاسبه می‌شوند. مقیاس‌بندی می‌تواند زمانی مفید باشد که تصویری با جزئیات بیشتر نیاز باشد، مثلاً برای استفاده در مواد چاپی با کیفیت بالا.

const imageScaleX = 2;
const imageScaleY = imageScaleX;

const imageio = java.import("javax.imageio.ImageIO");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
    const firstShape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);

    // شکل را در حافظه به صورت بیت‌مپ با مقیاس‌گذاری ذخیره می‌کند.
    const shapeImage = firstShape.getImage(aspose.slides.ShapeThumbnailBounds.Shape, imageScaleX, imageScaleY);
    const shapeImageStream = java.newInstanceSync("java.io.ByteArrayOutputStream");
    shapeImage.save(shapeImageStream, aspose.slides.ImageFormat.Png);
    shapeImage.dispose();

    // یک بیت‌مپ شکل را از حافظه می‌سازد.
    const byteBuffer = java.callMethodSync(shapeImageStream, "toByteArray");    
    const javaBytes = java.newArray("byte", Array.from(byteBuffer));
    const ByteArrayInputStream = java.import("java.io.ByteArrayInputStream");
    const shapeImageInputStream = new ByteArrayInputStream(javaBytes);
    const shapeBitmap = imageio.read(shapeImageInputStream);

    // مرزهای پاراگراف دوم را محاسبه می‌کند.
    const secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
    const paragraphRectangle = secondParagraph.getRect();
    paragraphRectangle.setRect(
            paragraphRectangle.getX() * imageScaleX,
            paragraphRectangle.getY() * imageScaleY,
            paragraphRectangle.getWidth() * imageScaleX,
            paragraphRectangle.getHeight() * imageScaleY
    );

    // مختصات و اندازه تصویر خروجی را محاسبه می‌کند (حداقل اندازه - ۱×۱ پیکسل).
    const imageX = Math.floor(paragraphRectangle.getX());
    const imageY = Math.floor(paragraphRectangle.getY());
    const imageWidth = Math.max(1, Math.ceil(paragraphRectangle.getWidth()));
    const imageHeight = Math.max(1, Math.ceil(paragraphRectangle.getHeight()));

    // بیت‌مپ شکل را برش می‌دهد تا فقط بیت‌مپ پاراگراف به دست آید.
    const paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);

    const file = java.newInstanceSync("java.io.File", "paragraph.png");

    imageio.write(paragraphBitmap, "png", file);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

سوالات رایج

آیا می‌توانم کاملاً بسته‌بندی خطوط داخل یک فریم متن را غیرفعال کنم؟

بله. از تنظیم بسته‌بندی فریم متن (setWrapText) استفاده کنید تا بسته‌بندی را خاموش کنید، بنابراین خطوط در لبه‌های فریم شکسته نمی‌شوند.

چگونه می‌توانم مرزهای دقیق یک پاراگراف خاص را بر روی اسلاید بدست آورم؟

می‌توانید مستطیل محصور کننده پاراگراف (و حتی یک بخش منفرد) را بازیابی کنید تا موقعیت و اندازه دقیق آن را روی اسلاید بدانید.

کنترل تراز پاراگراف (چپ/راست/وسط/توزیع) در کجا انجام می‌شود؟

متد setAlignment تنظیم سطح پاراگراف در ParagraphFormat است؛ این تنظیم برای کل پاراگراف اعمال می‌شود صرف‌نظر از قالب‌بندی هر بخش جداگانه.

آیا می‌توانم زبان بررسی املا را فقط برای بخشی از پاراگراف (مثلاً یک کلمه) تنظیم کنم؟

بله. زبان در سطح بخش تنظیم می‌شود (PortionFormat.setLanguageId)، بنابراین می‌توان چندین زبان را در یک پاراگراف همزمان داشته باشید.