Verifying a deck
pptxboss check runs 72 structural rules from ECMA-376 Parts 1 and 2 over
a package: the ZIP container, part names, content types, relationships,
required parts, id ranges and uniqueness, XML well-formedness, namespace
consistency and core properties. There is no schema validation; the rules
are the constraints the specification states in prose.
CLI
pptxboss check deck.pptx
pptxboss check --quiet deck.pptx # errors only
pptxboss check --json deck.pptx
pptxboss check --no-crc deck.pptx # skip CRC-32 of XML parts
pptxboss rules # every rule
Exit code 0 when no errors were found, 1 when errors were found, 2 when the file could not be opened at all. Warnings alone exit 0.
Each finding prints as severity CODE part (location): message [clause].
Python
for finding in pptxboss.check("deck.pptx"):
finding.severity, finding.code, finding.clause, finding.part, finding.location, finding.message
report = pptxboss.check_report("deck.pptx") # .findings, .parts_checked, .truncated, .is_clean
pptxboss.rules()
Rust
use pptxboss_check::{check_path, CheckOptions};
let report = check_path("deck.pptx", &CheckOptions::default())?;
for finding in &report.findings {
println!("{finding}");
}
Severity policy
A violation of a "shall" is an error. A "should", an inconsistency PowerPoint itself tolerates, or a policy the specification leaves open is a warning. Anything merely notable is info. Decks saved by PowerPoint pass with no findings.
Limitations
The verifier reads every XML part once. It does not validate against the XSD schemas, does not check DrawingML value ranges beyond slide size and ids, and does not inspect chart, diagram or embedded object parts.