دریافت مرزهای پاراگراف از ارائه‌ها در JavaScript

نمای کلی

این مقاله توضیح می‌دهد که چگونه مرزها، اندازه و مختصات پاراگراف‌ها و بخش‌های متن در Aspose.Slides به دست آید. نشان می‌دهد چگونه با استفاده از getRect() مستطیل یک پاراگراف در TextFrame را بازیابی کنید، چگونه مختصات پاراگراف و بخش داخل قاب متن سلول جدول را دریافت کنید، و جزئیات مهمی مانند واحدهای اندازه‌گیری، اثر بسته‌بندی متن بر مرزها، تبدیل به پیکسل و مقادیر قالب‌بندی مؤثر پاراگراف را برجسته می‌کند.

دریافت مختصات پاراگراف و بخش در TextFrame

با استفاده از Aspose.Slides for Node.js در Java، توسعه‌دهندگان اکنون می‌توانند مختصات مستطیلی پاراگراف داخل مجموعه پاراگراف‌های TextFrame را به‌دست آورند. همچنین امکان دریافت مختصات بخش داخل مجموعه بخش‌های یک پاراگراف را فراهم می‌کند. در این موضوع، با کمک یک مثال نشان می‌دهیم که چگونه مختصات مستطیلی پاراگراف را همراه با موقعیت بخش داخل پاراگراف به‌دست آوریم.

var shape = pres.getSlides().get_Item(0).getShapes().get_Item(0);
var textFrame = shape.getTextFrame();
for (let i = 0; i < textFrame.getParagraphs().getCount(); i++) {
    const paragraph = textFrame.getParagraphs().get_Item(i);
    for (let j = 0; j < paragraph.getPortions().getCount(); j++) {
        const portion = paragraph.getPortions().get_Item(j);
        var point = portion.getCoordinates();
    }
}

دریافت مختصات مستطیلی پاراگراف

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

var pres = new aspose.slides.Presentation("HelloWorld.pptx");
try {
    var shape = pres.getSlides().get_Item(0).getShapes().get_Item(0);
    var textFrame = shape.getTextFrame();
    var rect = textFrame.getParagraphs().get_Item(0).getRect();
    console.log("X: " + rect.x + " Y: " + rect.y + " Width: " + rect.width + " Height: " + rect.height);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

دریافت اندازه پاراگراف و بخش داخل قاب متن سلول جدول

برای دریافت اندازه و مختصات Portion یا Paragraph در یک قاب متن سلول جدول، می‌توانید از روش‌های Portion.getRect و Paragraph.getRect استفاده کنید.

این کد نمونه عملیات توضیح داده شده را نشان می‌دهد:

var pres = new aspose.slides.Presentation("pres.pptx");
try {
    var tbl = pres.getSlides().get_Item(0).getShapes().get_Item(0);
    var cell = tbl.getRows().get_Item(1).get_Item(1);
    var x = tbl.getX() + tbl.getRows().get_Item(1).get_Item(1).getOffsetX();
    var y = tbl.getY() + tbl.getRows().get_Item(1).get_Item(1).getOffsetY();
    
    for (let i = 0; i < cell.getTextFrame().getParagraphs().getCount(); i++) {
        const para = cell.getTextFrame().getParagraphs().get_Item(i);
        if (para.getText() === "") {
            continue;
        }
        var rect = para.getRect();
        var shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, java.newFloat(rect.getX() + x), java.newFloat(rect.getY() + y), java.newFloat(rect.getWidth()), java.newFloat(rect.getHeight()));
        shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
        shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "YELLOW"));
        shape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
        for (let j = 0; j < para.getPortions().getCount(); j++) {
            const portion = para.getPortions().get_Item(j);
            if (portion.getText().includes("0")) {
                rect = portion.getRect();
                shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, java.newFloat(rect.getX() + x), java.newFloat(rect.getY() + y), java.newFloat(rect.getWidth()), java.newFloat(rect.getHeight()));
                shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
            }
        }
    }
    pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

سوالات متداول

مختصات پاراگراف و بخش‌های متن به چه واحدی بازگردانده می‌شوند؟

در واحد نقاط (points) که 1 اینچ = 72 نقطه است. این برای تمام مختصات و ابعاد روی اسلاید اعمال می‌شود.

آیا بسته‌بندی کلمه بر مرزهای پاراگراف تأثیر می‌گذارد؟

بله. اگر wrapping در TextFrame فعال باشد، متن برای متناسب شدن با عرض ناحیه شکسته می‌شود که مرزهای واقعی پاراگراف را تغییر می‌دهد.

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

بله. نقاط را به پیکسل با استفاده از فرمول: pixels = points × (DPI / 72) تبدیل کنید. نتیجه به DPI انتخاب‌شده برای رندر/اِکسپورت بستگی دارد.

چگونه می‌توان پارامترهای قالب‌بندی «موثر» پاراگراف را با در نظر گرفتن وراثت سبک به‌دست آورد؟

از ساختار داده قالب‌بندی مؤثر پاراگراف استفاده کنید؛ این ساختار مقادیر نهایی ادغام‌شده برای تورفتگی‌ها، فواصل، بسته‌بندی، RTL و موارد دیگر را برمی‌گرداند.