mcat 0.1.1

a powerfull extended cat command, to cat all the things you couldn't before
use std::path::Path;

pub fn pdf_convert(path: &Path) -> Result<String, Box<dyn std::error::Error>> {
    let doc = lopdf::Document::load(path)?;
    let mut result = String::new();

    let num_pages = doc.get_pages().len();
    for i in 1..=num_pages {
        let page_text = doc.extract_text(&[i as u32])?.replace("  ", " ");

        let mut output = String::with_capacity(page_text.len());
        for line in page_text.lines() {
            output.push_str(line.trim());
            output.push('\n');
        }
        let page_text = output;
        let page_text = page_text.replace("\n\n\n", "\0");
        let page_text = page_text.replace("\n\n", " ");
        let page_text = page_text.replace("\n", " ");
        let page_text = page_text.replace("\0", "\n\n\n");

        result.push_str(&format!("## Page {}\n\n", i));

        result.push_str(&page_text);
        result.push_str("\n\n");
    }

    Ok(result)
}