- Add worked example to Glyph struct showing all 11 fields
- Add worked example to Span struct showing all 10 fields
- Examples use rust,no_run for internal dependencies
- cargo doc passes with docs.rs feature set
- Verification note added at notes/pdftract-3eohy.md
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The extract_markdown stub was calling extract_text instead of
extract_text_fn, causing a compilation error. This fixes the
function name to match the exported function from extract_text.rs.
This completes the extract_text PyO3 entry point implementation,
which was already present in extract_text.rs and lib.rs.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add is_hidden field to Glyph and MarkedContentFrame structs for tracking
Optional Content Group (OCG) visibility. When a BDC operator with /OC tag
references an OCG that is OFF by default, glyphs within that marked content
block receive is_hidden=true.
Changes:
- Glyph struct: Add is_hidden: bool field (default false)
- MarkedContentFrame struct: Add is_hidden: bool field (default false)
- MarkedContentStack: Add is_hidden() method to check if any frame is hidden
(OR semantics: outer hidden makes all descendants hidden)
- MarkedContentFrame::bdc(): Add is_hidden parameter
- MarkedContentStack::push_bdc(): Add is_hidden parameter
- parse_bdc(): Add default_off_ocgs parameter to check OCG visibility
- Extract /OCG reference from properties dict
- Set is_hidden=true if OCG is in the OFF set
- emit_glyph(): Add is_hidden parameter and pass to Glyph::new()
- Add comprehensive tests for OCG functionality
Per bead pdftract-1q19p acceptance criteria:
- BDC /OC with OCG in default-OFF: glyphs have is_hidden=true
- BDC /OC with OCG not in OFF: glyphs have is_hidden=false
- Nested OCs with outer hidden: all inner glyphs hidden
- No /OCProperties: no glyphs marked hidden
Closes: pdftract-1q19p
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add Glyph struct with 10 fields per plan spec (Phase 3.2)
- Implement emit_glyph() that composes Glyph from GraphicsState + font metrics
- Add new_raw_glyph_list() helper with 4096 capacity pre-allocation
- Use Box<Color> to optimize struct size to 64 bytes
- Add comprehensive tests for all acceptance criteria
- Re-export Glyph, emit_glyph, new_raw_glyph_list from lib.rs
Closes: pdftract-4j0ub