use super::OxideDocument;
use crate::pdf::error::{PdfError, Result};
pub(crate) fn extract_image_positions(doc: &mut OxideDocument) -> Result<Vec<(usize, usize)>> {
let page_count = doc
.doc
.page_count()
.map_err(|e| PdfError::MetadataExtractionFailed(format!("pdf_oxide: failed to get page count: {e}")))?;
let mut positions = Vec::new();
let mut global_index = 0usize;
for page_idx in 0..page_count {
let oxide_images = match doc.doc.extract_images(page_idx) {
Ok(images) => images,
Err(e) => {
tracing::debug!(
page = page_idx,
"pdf_oxide: failed to extract images for positions: {e}"
);
continue;
}
};
let page_number = page_idx + 1;
for _img in &oxide_images {
positions.push((page_number, global_index));
global_index += 1;
}
}
Ok(positions)
}