diff --git a/src/extractor/content_stream.rs b/src/extractor/content_stream.rs index 42a9515..7fa524c 100644 --- a/src/extractor/content_stream.rs +++ b/src/extractor/content_stream.rs @@ -7,7 +7,7 @@ use crate::text_utils::{ decode_text_string, effective_font_size, expand_ligatures, is_bold_font, is_italic_font, }; use crate::tounicode::FontCMaps; -use crate::types::{ItemType, PdfLine, PdfRect, TextItem}; +use crate::types::{ItemType, PageExtraction, PdfLine, PdfRect, TextItem}; use crate::PdfError; use log::trace; use lopdf::{Document, Encoding, Object, ObjectId}; @@ -25,7 +25,7 @@ pub(crate) fn extract_page_text_items( page_id: ObjectId, page_num: u32, font_cmaps: &FontCMaps, -) -> Result<(Vec, Vec, Vec), PdfError> { +) -> Result { use lopdf::content::Content; let mut items = Vec::new(); diff --git a/src/extractor/mod.rs b/src/extractor/mod.rs index d688acf..e0ea518 100644 --- a/src/extractor/mod.rs +++ b/src/extractor/mod.rs @@ -10,7 +10,7 @@ mod xobjects; use crate::text_utils::is_rtl_text; use crate::tounicode::FontCMaps; -use crate::types::{PdfLine, PdfRect, TextItem}; +use crate::types::{PageExtraction, TextItem}; use crate::PdfError; use log::debug; use lopdf::{Document, Object, ObjectId}; @@ -86,7 +86,7 @@ pub fn extract_text_with_positions_pages>( pub(crate) fn extract_text_with_positions_and_rects>( path: P, page_filter: Option<&HashSet>, -) -> Result<(Vec, Vec, Vec), PdfError> { +) -> Result { crate::validate_pdf_file(&path)?; let doc = match Document::load(&path) { Ok(d) => d, @@ -117,7 +117,7 @@ pub fn extract_text_with_positions_mem_pages( pub(crate) fn extract_text_with_positions_mem_and_rects( buffer: &[u8], page_filter: Option<&HashSet>, -) -> Result<(Vec, Vec, Vec), PdfError> { +) -> Result { crate::validate_pdf_bytes(buffer)?; let doc = match Document::load_mem(buffer) { Ok(d) => d, @@ -139,7 +139,7 @@ pub(crate) fn extract_positioned_text_from_doc( doc: &Document, font_cmaps: &FontCMaps, page_filter: Option<&HashSet>, -) -> Result<(Vec, Vec, Vec), PdfError> { +) -> Result { let pages = doc.get_pages(); let mut all_items = Vec::new(); let mut all_rects = Vec::new(); diff --git a/src/types.rs b/src/types.rs index 4e0106e..7798f7b 100644 --- a/src/types.rs +++ b/src/types.rs @@ -8,6 +8,9 @@ use std::collections::HashMap; use crate::text_utils::should_join_items; +/// Result tuple returned by page-level text extraction: text items, rectangles, and line segments. +pub(crate) type PageExtraction = (Vec, Vec, Vec); + // ── Font types (crate-internal) ────────────────────────────────────── /// Font encoding map: maps byte codes to Unicode characters