Skip to main content

parse_docx

Function parse_docx 

Source
pub fn parse_docx(bytes: &[u8]) -> Result<OoxmlPackage, String>
Examples found in repository?
examples/dump_doc_text.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    print!("{}", text(&model));
11}
More examples
Hide additional 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}