pdftract/tests/fixtures
jedarden 64efdd594e feat(pdftract-5u8bp): implement SVG clip generator
Implement SVG clip generator for --receipts=svg mode. Generates
self-contained SVG documents from TTF/OTF glyph outlines via
ttf-parser, with proper coordinate transform (PDF bottom-left
origin to SVG top-left origin) and color space conversion.

Components:
- SvgGenerator: filters glyphs by bbox, extracts outlines
- SvgPathBuilder: ttf-parser::OutlineBuilder impl for SVG paths
- pdf_color_to_css(): DeviceRGB/Gray/CMYK to CSS colors

Acceptance criteria:
- SVG validates via quick-xml parse roundtrip
- Aggregate size <= 500 KB for 100 receipts (test passes)
- No external resource references (self-contained)
- Handles missing glyph outlines gracefully
- Coordinate transform unit-tested: (220, 432) → (20, 8)

Also fix unstable as_str() → as_ref() in stream.rs test.

Closes pdftract-5u8bp

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 03:43:19 -04:00
..
classifier feat(pdftract-59zz): implement MCP bearer token ingress channels and TH-03 enforcement 2026-05-18 02:47:54 -04:00
fonts feat(pdftract-5u8bp): implement SVG clip generator 2026-05-23 03:43:19 -04:00
malformed test(fixtures): restore malformed PDF corpus, commit so it is durable 2026-05-21 23:53:33 -04:00
profiles docs(pdftract-15cs8): add verification note for Crypt filter implementation 2026-05-20 18:17:34 -04:00
generate_lzw_fixtures.rs feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
generate_lzw_fixtures_main.rs feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_incremental_early.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_incremental_late.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_incremental_orig.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_mixed_early.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_mixed_late.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_mixed_orig.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_predictor_encoded.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_predictor_orig.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_repeated_early.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_repeated_late.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_repeated_orig.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_simple_early.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_simple_late.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_simple_orig.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
lzw_truncated.bin feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00