在 PHP 中管理演示文稿的绘图参考线

Overview

绘图参考线是可调节的水平和垂直线,可帮助用户在 PowerPoint 中编辑演示文稿时始终保持形状对齐。当应用程序生成演示文稿后需要手动细化时,它们尤其有用:应用程序可以保存相同的对齐辅助,供作者在添加或移动内容时遵循。

绘图参考线是编辑辅助工具,而不是幻灯片内容。它们不会出现在幻灯片放映或渲染输出中。Aspose.Slides for PHP via Java 通过 DrawingGuidesCollection 类公开这些参考线。每个参考线由 DrawingGuide 表示,具有方向、位置和颜色。

位置以点(points)为单位,从相关幻灯片或母版的左上角测量。垂直参考线使用水平坐标,通常在 0 到幻灯片宽度之间。水平参考线使用垂直坐标,通常在 0 到幻灯片高度之间。

Add Guides to the Slide View

使用 CommonSlideViewProperties::getDrawingGuides 来管理在编辑普通幻灯片时显示的参考线。调用 DrawingGuidesCollection::add,并提供一个 Orientation 值和以点为单位的位置。

下面的示例在幻灯片中心右侧添加一条垂直参考线,在其下方添加一条水平参考线:

use aspose\slides\Orientation;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $slideSize = $presentation->getSlideSize()->getSize();
    $slideWidth = java_values($slideSize->getWidth());
    $slideHeight = java_values($slideSize->getHeight());
    $guides = $presentation->getViewProperties()->getSlideViewProperties()->getDrawingGuides();

    $guides->add(Orientation::Vertical, $slideWidth / 2 + 12.5);
    $guides->add(Orientation::Horizontal, $slideHeight / 2 + 12.5);

    $presentation->save("drawing-guides.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Access Drawing Guides

DrawingGuidesCollection::getCountDrawingGuidesCollection::get_Item 方法可访问现有参考线。DrawingGuide::getOrientationDrawingGuide::getPositionDrawingGuide::getColor 方法返回的值也可以通过对应的 setter 方法进行更改。

下面的示例读取上述创建的演示文稿中的幻灯片视图参考线:

use aspose\slides\Presentation;

$presentation = new Presentation("drawing-guides.pptx");
try {
    $guides = $presentation->getViewProperties()->getSlideViewProperties()->getDrawingGuides();
    $guideCount = java_values($guides->getCount());

    for ($index = 0; $index < $guideCount; $index++) {
        $guide = $guides->get_Item($index);
        $orientation = java_values($guide->getOrientation());
        $position = java_values($guide->getPosition());
        $color = java_values($guide->getColor()->toString());
        echo sprintf("Guide %d: orientation = %d, position = %.2f, color = %s", $index, $orientation, $position, $color) . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Add Guides to Master and Layout Slides

幻灯片母版及其每个布局幻灯片都可以拥有自己的绘图参考线集合。对母版幻灯片使用 MasterSlide::getDrawingGuides,对布局幻灯片使用 LayoutSlide::getDrawingGuides

下面的示例在第一张母版幻灯片上添加一条垂直参考线,在第一张布局幻灯片上添加一条水平参考线:

use aspose\slides\Orientation;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $slideSize = $presentation->getSlideSize()->getSize();
    $slideWidth = java_values($slideSize->getWidth());
    $slideHeight = java_values($slideSize->getHeight());
    $masterGuides = $presentation->getMasters()->get_Item(0)->getDrawingGuides();
    $layoutGuides = $presentation->getLayoutSlides()->get_Item(0)->getDrawingGuides();

    $masterGuides->add(Orientation::Vertical, $slideWidth / 2 - 20);
    $layoutGuides->add(Orientation::Horizontal, $slideHeight / 2 + 20);

    $presentation->save("master-layout-drawing-guides.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Add Guides to Notes and Handout Masters

备注母版和讲义母版也支持绘图参考线。使用 MasterNotesSlide::getDrawingGuidesMasterHandoutSlide::getDrawingGuides 访问它们的集合。如果演示文稿不包含这些母版,可通过 Presentation::getMasterNotesSlideManagerPresentation::getMasterHandoutSlideManager 获取相应管理器,然后使用 setDefaultMasterNotesSlidesetDefaultMasterHandoutSlide 创建默认母版。

下面的示例在备注母版上添加一条水平参考线,在讲义母版上添加一条垂直参考线:

use aspose\slides\Orientation;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $notesSize = $presentation->getNotesSize()->getSize();
    $notesWidth = java_values($notesSize->getWidth());
    $notesHeight = java_values($notesSize->getHeight());
    $notesMaster = $presentation->getMasterNotesSlideManager()->setDefaultMasterNotesSlide();
    $handoutMaster = $presentation->getMasterHandoutSlideManager()->setDefaultMasterHandoutSlide();

    $notesMaster->getDrawingGuides()->add(Orientation::Horizontal, $notesHeight / 2 + 50);
    $handoutMaster->getDrawingGuides()->add(Orientation::Vertical, $notesWidth / 2 - 50);

    $presentation->save("notes-handout-drawing-guides.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Clear Drawing Guides

调用 DrawingGuidesCollection::clear 可移除特定集合中的所有参考线。清除一个集合不会影响存储在其他范围中的参考线。

下面的示例在不创建缺失母版的情况下,清除幻灯片视图参考线以及幻灯片母版、布局幻灯片、备注母版和讲义母版上的全部参考线:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("presentation-with-guides.pptx");
try {
    $presentation->getViewProperties()->getSlideViewProperties()->getDrawingGuides()->clear();

    $masterCount = java_values($presentation->getMasters()->size());
    for ($index = 0; $index < $masterCount; $index++) {
        $presentation->getMasters()->get_Item($index)->getDrawingGuides()->clear();
    }

    $layoutCount = java_values($presentation->getLayoutSlides()->size());
    for ($index = 0; $index < $layoutCount; $index++) {
        $presentation->getLayoutSlides()->get_Item($index)->getDrawingGuides()->clear();
    }

    $notesMaster = $presentation->getMasterNotesSlideManager()->getMasterNotesSlide();
    if (!java_is_null($notesMaster)) {
        $notesMaster->getDrawingGuides()->clear();
    }

    $handoutMaster = $presentation->getMasterHandoutSlideManager()->getMasterHandoutSlide();
    if (!java_is_null($handoutMaster)) {
        $handoutMaster->getDrawingGuides()->clear();
    }

    $presentation->save("presentation-without-guides.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

FAQ

绘图参考线会出现在幻灯片放映或导出的图像中吗?

不会。绘图参考线是用于编辑的对齐辅助,不会作为演示内容渲染。

可以直接向单个普通幻灯片添加绘图参考线吗?

普通幻灯片的编辑参考线存储在演示文稿的幻灯片视图属性中。幻灯片母版、布局幻灯片、备注母版和讲义母版各自拥有独立的参考线集合。

参考线位置使用什么单位?

位置以点为单位,72 点等于一英寸。垂直位置相对于左边缘测量,水平位置相对于顶部测量。

清除绘图参考线会删除形状或更改幻灯片内容吗?

不会。DrawingGuidesCollection::clear 方法仅移除选定集合中的参考线,形状和其他幻灯片内容保持不变。