dump_doc_structure/
dump_doc_structure.rs1fn 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}