Expand description
OPC(Open Packaging Convention)容器层。
.pptx 本质上是一个 zip 包,其内部由若干个 Part 组成,
Part 之间通过 Relationship(关系)相互链接。本模块提供与
python-pptx 的 pptx.opc 子包对标的最小化 Rust 实现。
§模块构成
OpcPackage:包加载/保存入口,对应一个完整的.pptx文件。Part:单个 part 的抽象(名称 + Content-Type + 字节内容)。PartName:part 的逻辑路径(如/ppt/slides/slide1.xml)。ContentTypes:[Content_Types].xml模型(defaults + overrides)。Relationships:单个.rels文件模型。RelType:常用关系类型枚举。
§在三层架构中的位置
本模块是 crate 三个层级中的 最底层(容器层)。它不依赖
oxml(OOXML 模型)或 shape / presentation 等高阶 API。
oxml::writer 输出的字节最终通过 OpcPackage::put_part 注入本层。
§与 OOXML 规范的对应
Part↔ OOXML 规范中的“部件“(part);PartName↔ “部件名称”(PartName路径,根用/);Relationships↔*.relsXML 文件;ContentTypes↔ 根目录下的[Content_Types].xml。
§与 python-pptx 的对应
pptx.opc.package.OpcPackage←→OpcPackage;pptx.opc.package.Part←→Part;pptx.opc.packuri.PackURI←→PartName;pptx.opc.constants.CONTENT_TYPE←→ct模块常量;pptx.opc.parts.*.part_class_selector思路未移植,由调用方决定具体 part。
§示例
use pptx_rs::opc::{OpcPackage, Part, PartName};
let mut pkg = OpcPackage::new();
let xml = b"<?xml version=\"1.0\"?><root/>".to_vec();
let p = Part::new(PartName::from_unchecked("/custom/foo.xml"),
"application/xml", xml);
pkg.put_part(p);
pkg.save("out.pptx").unwrap();Re-exports§
pub use package::ct;
Modules§
- content_
types [Content_Types].xml模型。- package
OpcPackage:包加载/保存。- part
Part与PartName:OPC 包内的逻辑条目。- rels
- 关系(
.rels)模型。
Structs§
- Content
Types [Content_Types].xml模型。- Default
Ext - 默认 Content-Type(按扩展名匹配)。
- OpcPackage
- 一个 OPC 包。
- Override
- Override:按 part 名称覆盖 Content-Type(通常用于 XML 部件)。
- Part
- 一个 OPC part。
- Part
Name - Part 逻辑路径,形式如
/ppt/slides/slide1.xml。 - Relationship
- 一条关系。
- Relationships
- 一个
.rels文件对应的全部关系集合。
Enums§
- Part
Name Error - Part 名称错误。
- RelType
- 关系类型(OOXML 标准)。
- Target
- 关系的目标:内部 part / 外部 URL。
Functions§
- new_
part_ name - 快速构造一个 PartName:未做合法性校验。