use crate::catalog::NodeId;
use crate::document::PDFDocument;
use crate::error::PDFError::{ContentStreamTypeError, PageNotFound};
use crate::error::Result;
use crate::filter::decode_stream;
use crate::objects::{PDFObject, Stream};
fn extract_page_content_stream(document: &mut PDFDocument, page_id: NodeId) -> Result<Vec<Stream>> {
let page = match document.get_page(page_id) {
Some(page) => page,
None => return Err(PageNotFound(format!("Page not found:{}", page_id))),
};
let contents = page.get_contents();
let mut streams = Vec::new();
for tuple in contents {
match document.read_object_with_ref(tuple)? {
Some(PDFObject::IndirectObject(_, _, obj)) => match *obj {
PDFObject::Stream(stream) => streams.push(stream),
_ => return Err(ContentStreamTypeError)
}
_ => return Err(ContentStreamTypeError)
}
}
Ok(streams)
}
pub fn extract_page_text(document: &mut PDFDocument, page_id: NodeId) -> Result<Option<String>> {
let streams = extract_page_content_stream(document, page_id)?;
for stream in streams {
let text = decode_stream(&stream)?;
}
Ok(Some(String::new()))
}