pdftract/crates
jedarden 5b2fb28183 feat(pdftract-46qa): implement 7.6.1 annotation walker dispatcher
Implement Phase 7.6.1: Per-page /Annots walker + subtype dispatch.
Creates the annotation module with:

- AnnotationCommon struct with shared fields (subtype, rect, contents,
  author, modified date, color, opacity, flags, name_id, subject)
- dispatch_annotations() function that walks /Annots arrays and
  dispatches by /Subtype:
  - /Link → link extractor (7.6.2 placeholder)
  - /Widget → skipped (handled by forms 7.4)
  - /Popup → skipped (companion subtype)
  - Others → annotation extractor (7.6.3 placeholder)
- PDF date parser (D:YYYYMMDDHHmmSSOHH'mm' → ISO 8601)
- Dereference loop detection via visited set

Acceptance criteria PASS:
- Unit tests for mixed annotation subtypes
- AnnotationCommon decoding for all non-skipped annotations
- Date parsing with ISO 8601 output
- Empty /Annots handling without diagnostics
- Public API returns (Vec<LinkAnnotation>, Vec<Annotation>)

Closes: pdftract-46qa

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 15:30:45 -04:00
..
pdftract-cer-diff docs(pdftract-aawrz): add LICENSE-MIT and LICENSE-APACHE files 2026-05-23 10:36:28 -04:00
pdftract-cli feat(pdftract-64p5): implement classify CLI subcommand and --auto flag 2026-05-24 15:16:56 -04:00
pdftract-core feat(pdftract-46qa): implement 7.6.1 annotation walker dispatcher 2026-05-24 15:30:45 -04:00
pdftract-libpdftract feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
pdftract-py feat(pdftract-2nu0s): implement Python SDK contract conformance 2026-05-24 08:55:11 -04:00