Lấy giới hạn phần văn bản từ bản trình chiếu trong PHP

Tổng quan

Một đoạn văn bản (text portion) đại diện cho một mảnh văn bản cụ thể bên trong một đoạn và cho phép bạn làm việc với mảnh đó một cách độc lập so với nội dung xung quanh. Trong Aspose.Slides, các đoạn văn bản có thể được sử dụng khi bạn cần lấy giới hạn của một mảnh văn bản, áp dụng định dạng chỉ cho một phần của đoạn, hoặc kiểm soát hành vi văn bản ở mức chi tiết hơn.

Bài viết này cho thấy cách lấy hình chữ nhật bao quanh một đoạn bằng cách sử dụng Portion::getRect. Nó cũng trình bày cách lấy tọa độ bắt đầu của một đoạn bằng cách sử dụng Portion::getCoordinates. Ngoài ra, bài viết còn nêu các kịch bản thường gặp liên quan đến đoạn, chẳng hạn như áp dụng siêu liên kết cho một mảnh văn bản duy nhất, hiểu cách định dạng được kế thừa qua đoạn, khung văn bản và chủ đề, cũng như xử lý các trường hợp phông chữ được chỉ định không khả dụng.

Lấy giới hạn của một đoạn văn bản

Sử dụng Portion::getRect để lấy hình chữ nhật bao quanh một đoạn văn bản:

$presentation = new Presentation("Shapes.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shape = $slide->getShapes()->get_Item(0);

    foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
        foreach ($paragraph->getPortions() as $portion) {
            $rectangle = $portion->getRect();
            $rectangleX = java_values($rectangle->getX());
            $rectangleY = java_values($rectangle->getY());
            $rectangleWidth = java_values($rectangle->getWidth());
            $rectangleHeight = java_values($rectangle->getHeight());

            echo("X = " . $rectangleX . "; Y = " . $rectangleY . "; Width = " . $rectangleWidth . "; Height = " . $rectangleHeight);
        }
    }
} finally {
    $presentation->dispose();
}

Lấy tọa độ của một đoạn văn bản

Sử dụng Portion::getCoordinates để lấy tọa độ bắt đầu của một đoạn văn bản:

$presentation = new Presentation("Shapes.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shape = $slide->getShapes()->get_Item(0);

    foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
        foreach ($paragraph->getPortions() as $portion) {
            $point = $portion->getCoordinates();
            $pointX = java_values($point->getX());
            $pointY = java_values($point->getY());

            echo("X = " . $pointX . "; Y = " . $pointY);
        }
    }
} finally {
    $presentation->dispose();
}

Câu hỏi thường gặp

Tôi có thể áp dụng siêu liên kết chỉ cho một phần của văn bản trong một đoạn duy nhất không?

Có, bạn có thể assign a hyperlink cho một đoạn riêng lẻ; chỉ mảnh đó sẽ có thể nhấp, không phải toàn bộ đoạn.

Cách kế thừa kiểu dáng hoạt động như thế nào: đoạn ghi đè gì và gì được lấy từ đoạn hoặc khung văn bản?

Các thuộc tính ở mức Portion có độ ưu tiên cao nhất. Nếu một thuộc tính không được đặt trên Portion, Aspose.Slides sẽ lấy nó từ Paragraph. Nếu cũng không được đặt ở đó, Aspose.Slides sẽ sử dụng kiểu dáng của TextFrame hoặc theme.

Nếu phông chữ được chỉ định cho một đoạn không có trên máy hoặc máy chủ mục tiêu thì sẽ xảy ra gì?

Font substitution rules sẽ được áp dụng. Văn bản có thể được sắp xếp lại: các chỉ số, cách tách từ và chiều rộng có thể thay đổi, điều này quan trọng đối với việc định vị chính xác.

Tôi có thể thiết lập độ trong suốt hoặc gradient cho phần điền màu văn bản ở mức Portion một cách độc lập so với phần còn lại của đoạn không?

Có, màu văn bản, màu nền và độ trong suốt ở mức Portion có thể khác nhau so với các mảnh lân cận.