Skip to main content

Module presentation

Module presentation 

Source
Expand description

§演示文稿(Presentation)—— 顶层 API

对标 python-pptx 的 Presentation 类,是用户与本库交互的唯一入口

§内部数据

Presentation 内部维护三类“集合“:

  • Slides:用户实际编辑的幻灯片列表(Slide);
  • SlideLayouts:版式列表(每个 Slide 通过 rId 引用其中一个);
  • SlideMasters:母版列表(版式再引用母版,呈现“主-版-页“三层结构)。

这三者与 python-pptx 完全等价(python-pptx 用方法 slide_layouts[i] 暴露), 而是直接以集合形式提供,便于将来加入更复杂的工作流。

§在三层架构中的位置

Presentation 属于高阶 API 层。它直接聚合 Slides / SlideLayouts / SlideMasters 三个集合;当用户调用 save 时,由 to_opc_package 把这些内存模型 序列化为 crate::opc::OpcPackage,再交给 zip 写出 .pptx

§单元

幻灯片尺寸字段(width / height)一律使用 Emu,与 OOXML XML 中 <p:sldSz cx="..." cy="..."/> 一致。常用换算:1 in = 914 400 EMU, 1 cm = 360 000 EMU。

§示例

use pptx_rs::Presentation;
use pptx_rs::Inches;

let mut p = Presentation::new().unwrap();
let counter = p.id_counter();
let s = p.slides_mut().add_slide(counter).unwrap();
s.shapes_mut().add_textbox_with_text(
    Inches(1.0), Inches(1.0), Inches(4.0), Inches(1.0),
    "Hello, pptx-rs!",
).unwrap();
p.save("out.pptx").unwrap();

(doctest 用 unwrap 仅为缩短示例;生产代码应使用 ? 传播错误。)

Structs§

AudioEntry
音频媒体条目:保存到 /ppt/media/mediaN.mp3 的音频 part 元数据(TODO-033)。
ChartEntry
图表条目:保存到 /ppt/charts/chartN.xml 的 chart part 元数据。
CoreProperties
文档核心属性(对标 pypdf DocumentInformation + OOXML core-properties)。
CustomProperties
自定义文档属性集合(/docProps/custom.xml)。
DiagramEntry
SmartArt(diagram)条目:保存到 /ppt/diagrams/ 下的 4 个 part 元数据(TODO-037)。
MediaEntry
媒体条目:保存到 /ppt/media/<file> 目录中的二进制资源。
OleEntry
OLE 对象条目:保存到 /ppt/embeddings/oleObjectN.bin 的 OLE part 元数据(TODO-043)。
Presentation
演示文稿(内存模型)。
VideoEntry
视频媒体条目:保存到 /ppt/media/mediaN.mp4 的视频 part 元数据(TODO-033)。

Enums§

CustomPropertyValue
自定义属性值类型(/docProps/custom.xml 中的 vt:* 元素)。

Constants§

DEFAULT_HEIGHT_EMU
默认演示文稿高度(EMU)。对应 7.5 英寸 —— 1 in = 914 400 EMU。
DEFAULT_WIDTH_EMU
默认演示文稿宽度(EMU)。对应 10 英寸(4:3 比例)—— 1 in = 914 400 EMU。