pdftract/crates/pdftract-core/src/parser
jedarden caf6fecda5 feat(pdftract-1bb17): implement RunLengthDecode filter
Implements RunLengthDecode filter per PDF spec 7.4.5:
- 0-127: copy next (len+1) bytes literally
- 128: end-of-data marker
- 129-255: repeat next byte (257-len) times

The implementation:
- Handles truncated input gracefully per INV-8 (partial bytes returned)
- Enforces decompression bomb limits
- Includes comprehensive test coverage for all acceptance criteria

Acceptance criteria PASS:
- Literal copy: [3, A, B, C, D] -> [A,B,C,D]
- Repeat: [254, A] -> [A,A,A] (3 times)
- EOD: [128, ...] stops at 128
- Truncated input: [5, A, B] -> [A,B] (partial)
- Bomb limit enforced
- Empty input handled

Closes: pdftract-1bb17
2026-05-25 00:53:53 -04:00
..
lexer feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
object feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
catalog.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
diagnostic.rs feat(pdftract-4x0y): implement font binding and text positioning operators 2026-05-24 17:44:34 -04:00
marked_content.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
marked_content_operators.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
marked_content_stack.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
mod.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
objstm.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
ocg.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
outline.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
pages.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
resources.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
secrets.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
stream.rs feat(pdftract-1bb17): implement RunLengthDecode filter 2026-05-25 00:53:53 -04:00
struct_tree.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
xref.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00