pdftract/crates
jedarden 07f86c4c52 feat(pdftract-4zcj): implement link annotation extractor with dest_array support
Phase 7.6.2: Enhanced link annotation extraction for URI hyperlinks and
internal destination links. Added support for explicit destination arrays,
named destination resolution via /Catalog /Dests and /Catalog /Names /Dests
name trees, JavaScript action diagnostics, and link-without-target handling.

Key changes:
- Added FitType enum with all 8 PDF fit types (XYZ, Fit, FitH, FitV, FitR, FitB, FitBH, FitBV)
- Added DestArray struct for explicit destinations with page_index and fit fields
- Enhanced LinkAnnotation with dest_array field for explicit destinations
- Implemented name tree walking for /Catalog /Names /Dests resolution
- Added JavaScript action handling with diagnostic truncation (>100 chars)
- Added link-without-target diagnostic when /A and /Dest are both absent
- Updated dispatch_annotations signature to pass dests_dict and names_dests_ref

Acceptance criteria:
- Critical test: 5 URI hyperlinks appear in document links (link annotation emitted)
- Critical test: Named destination /Dest /SectionTwo -> dest: "SectionTwo"
- Unit tests: Explicit /Dest array (XYZ fit), /Dest as string-name, /JavaScript action
- Unit tests: Missing target diagnostic, all FitType variants
- Public Link { uri, dest, dest_array, page_index, rect } emitted per link
- /Dest resolution falls back gracefully when unresolved

Closes: pdftract-4zcj
2026-05-24 15:59:28 -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-4zcj): implement link annotation extractor with dest_array support 2026-05-24 15:59:28 -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