Class: OpcPackage
An OPC package loaded from .pptx bytes.
Fidelity contract: parts that are never mutated (Part.markDirty()) are written back byte-identically by save(). Whole-zip byte-identity is not promised (zip metadata and compression may differ), but part bodies, the part-name set, and part order are preserved.
Properties
contentTypes
readonlycontentTypes:ContentTypes
Content-type resolution + registration overlay.
Accessors
parts
Get Signature
get parts():
ReadonlyMap<string,Part>
All parts, keyed by partname, in zip/add order.
Returns
ReadonlyMap<string, Part>
Methods
addPart()
addPart(
partName,contentType,bytes):Part
Add a new part and register its content type (ensureRegistered), so the package stays consistent. Throws if the partname is already taken.
Parameters
| Parameter | Type |
|---|---|
partName | string |
contentType | string |
bytes | Uint8Array |
Returns
part()
part(
partName):Part|undefined
The part at partName, or undefined. Takes null, as a part-name getter such as Picture.imagePartName reads when there is no part to name, and misses on it.
Parameters
| Parameter | Type |
|---|---|
partName | string | null |
Returns
Part | undefined
partsByContentType()
partsByContentType(
contentType):Part[]
Parameters
| Parameter | Type |
|---|---|
contentType | string |
Returns
Part[]
relationshipsFor()
relationshipsFor(
sourcePartName?):Relationships
Relationships owned by a part ('/' for the package-level /_rels/.rels). Parts without a .rels part get an empty set.
Parameters
| Parameter | Type | Default value |
|---|---|---|
sourcePartName | string | '/' |
Returns
removePart()
removePart(
partName):boolean
Remove a part and return whether it existed. Its .rels part goes with it, along with its Override content-type registration and any cached relationship set it owned, so a later save() neither re-emits it nor flushes a stale .rels for it. A relationship set belongs to its part: one left behind would come back as the relationships of the next part added under the same name. Low-level: it does not touch references to this part (dangling rels are the caller's concern) nor cascade to parts this one referenced; see Presentation.removeSlide for the slide-aware variant that unwires the presentation and prunes orphans.
Parameters
| Parameter | Type |
|---|---|
partName | string |
Returns
boolean
reserveMediaPartName()
reserveMediaPartName(
extension,base?):string
Reserve an unused media partname /ppt/media/<base><n>.<ext> (n one past the highest existing index for that base). Does not create the part.
Parameters
| Parameter | Type | Default value |
|---|---|---|
extension | string | undefined |
base | string | 'image' |
Returns
string
reservePartNameLike()
reservePartNameLike(
templatePartName,taken?):string
Reserve an unused partname in the same directory and naming family as templatePartName, with a fresh index one past the highest existing one. The template's filename is split into a base (its stem minus any trailing digits) and an extension, e.g. /ppt/slideLayouts/slideLayout1.xml → /ppt/slideLayouts/slideLayout<n>.xml, /ppt/media/image1.png → /ppt/media/image<n>.png. Used when copying a part in from another package. Does not create the part.
taken names partnames to count as existing although the package does not hold them yet: an import plan's names for the parts it would add, so the names it predicts are the ones the copy itself is then given.
Parameters
| Parameter | Type |
|---|---|
templatePartName | string |
taken? | ReadonlySet<string> |
Returns
string
save()
save():
Promise<Uint8Array<ArrayBufferLike>>
Re-emit the package. Clean parts are written from their original bytes; dirty parts from their DOM. Dirty relationship sets and content types are flushed first. Part order is preserved from load; added parts append.
Returns
Promise<Uint8Array<ArrayBufferLike>>
load()
staticload(input):Promise<OpcPackage>
Parameters
| Parameter | Type |
|---|---|
input | OpcInput |
Returns
Promise<OpcPackage>