pub struct Slides { /* private fields */ }Expand description
Slides —— crate::presentation::Presentation 上的幻灯片集合。
§内部表示
仅持有一个 Vec<SlideEntry>,每个 entry 包含:
sld:高阶Slide;sld_id:sldIdLst中用到的 id(一般从256开始递增);rid:与presentation.xml.rels中的<Relationship Id="..."/>对应;partname:相对 zip 根的 part 路径(如/ppt/slides/slide1.xml)。
Implementations§
Source§impl Slides
impl Slides
Sourcepub fn add_slide(&mut self, id_counter: Rc<Cell<u32>>) -> Result<&mut Slide>
pub fn add_slide(&mut self, id_counter: Rc<Cell<u32>>) -> Result<&mut Slide>
添加一个新 slide(空白)。
返回新 slide 的可变引用,调用方可继续 shapes_mut().add_*(...)。
id_counter 必须从 crate::presentation::Presentation::id_counter 传入。
默认使用第一个 layout(索引 0)。如需指定版式,调用
Slides::add_slide_with_layout。
Sourcepub fn add_slide_with_layout(
&mut self,
id_counter: Rc<Cell<u32>>,
layout_idx: usize,
) -> Result<&mut Slide>
pub fn add_slide_with_layout( &mut self, id_counter: Rc<Cell<u32>>, layout_idx: usize, ) -> Result<&mut Slide>
Sourcepub fn remove(&mut self, idx: usize) -> Option<Slide>
pub fn remove(&mut self, idx: usize) -> Option<Slide>
按下标移除。
对标 python-pptx Presentation.slides._sldIdLst.remove(index)。
返回被移除的 Slide;越界返回 None。
Sourcepub fn move_slide(&mut self, from_idx: usize, to_idx: usize) -> Result<()>
pub fn move_slide(&mut self, from_idx: usize, to_idx: usize) -> Result<()>
将幻灯片从 from_idx 移动到 to_idx,实现重排序。
对标 python-pptx 中通过 XML 操作调整 sldIdLst 子元素顺序的能力。
§参数
from_idx:源位置索引(0-based);to_idx:目标位置索引(0-based,基于移除前的长度)。
§行为
- 越界时返回
Err(IndexOutOfRange); from_idx == to_idx时为 no-op;- 移动后所有
sld_id/rid/partname会重新分配(调用reindex)。
§示例
// 将第 0 张移到末尾
p.slides_mut().move_slide(0, 2).unwrap();Sourcepub fn insert_slide(
&mut self,
id_counter: Rc<Cell<u32>>,
index: usize,
) -> Result<&mut Slide>
pub fn insert_slide( &mut self, id_counter: Rc<Cell<u32>>, index: usize, ) -> Result<&mut Slide>
Sourcepub fn clone_slide(
&mut self,
src_idx: usize,
insert_at: usize,
) -> Result<&mut Slide>
pub fn clone_slide( &mut self, src_idx: usize, insert_at: usize, ) -> Result<&mut Slide>
克隆一个已有 slide 到指定位置。
对标 pypdf PdfWriter.clone_page_from_reader + insert_page。
深拷贝源 slide 的所有形状、文本、备注等,但分配新的 id / rid / partname。
§参数
src_idx:源 slide 索引;insert_at:目标位置(len= 末尾)。
Sourcepub fn append_slides_from(&mut self, other: &Slides)
pub fn append_slides_from(&mut self, other: &Slides)
从另一个 Slides 集合追加所有 slide(深拷贝)。
对标 pypdf PdfWriter.append_pages_from_reader。
每个源 slide 被深拷贝后追加到当前集合末尾。
§注意
- 源 slide 的
id_counter不会被共享——新 slide 使用 当前集合的id_counter; - 追加后所有
sld_id/rid/partname重新分配。
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Slides
impl !Send for Slides
impl !Sync for Slides
impl !UnwindSafe for Slides
impl Freeze for Slides
impl Unpin for Slides
impl UnsafeUnpin for Slides
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more