pub fn parse_docx(bytes: &[u8]) -> Result<OoxmlPackage, String>Examples found in repository?
More examples
examples/dump_doc_meta.rs (line 7)
1fn main() {
2 let path = std::env::args().nth(1).expect("path");
3 let bytes = std::fs::read(&path).expect("read");
4 let pkg = if path.ends_with(".doc") {
5 extend_docx::parse_document_bytes(&bytes).expect("parse")
6 } else {
7 extend_docx::parse_docx(&bytes).expect("parse_docx")
8 };
9 let model = extend_docx::build_doc_model(&pkg);
10 println!("parts: {}", pkg.parts.len());
11 println!("binary assets: {:?}", pkg.binary_assets.keys().collect::<Vec<_>>());
12 println!("headers: {}", model.metadata.header_sections.len());
13 println!("footers: {}", model.metadata.footer_sections.len());
14 println!("numbering: {}", model.metadata.numbering_definitions.is_some());
15 println!("footnotes: {:?}", model.metadata.footnotes.as_ref().map(|n| n.len()));
16 for h in &model.metadata.header_sections {
17 println!(" header {} type={:?} nodes={}", h.part_name, h.reference_type, h.nodes.len());
18 }
19 println!("warnings: {:?}", &model.metadata.warnings);
20}examples/dump_doc_structure.rs (line 7)
1fn main() {
2 let path = std::env::args().nth(1).expect("path");
3 let bytes = std::fs::read(&path).expect("read");
4 let pkg = if path.ends_with(".doc") {
5 extend_docx::parse_document_bytes(&bytes).expect("parse")
6 } else {
7 extend_docx::parse_docx(&bytes).expect("parse_docx")
8 };
9 let model = extend_docx::build_doc_model(&pkg);
10 for (i, node) in model.nodes.iter().enumerate() {
11 match node {
12 extend_docx::DocNode::Paragraph(p) => {
13 let text: String = p.children.iter().filter_map(|c| match c {
14 extend_docx::ParagraphChildNode::Text(r) => Some(r.text.clone()),
15 _ => None,
16 }).collect();
17 println!("{i:3} P {:?}", &text.chars().take(60).collect::<String>());
18 }
19 extend_docx::DocNode::Table(t) => {
20 println!("{i:3} T rows={} cols(first)={}", t.rows.len(),
21 t.rows.first().map(|r| r.cells.len()).unwrap_or(0));
22 }
23 }
24 }
25}