Skip to main content

dump_doc_structure/
dump_doc_structure.rs

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}