pdfcraft/crates
Brandon Thomas 604c560e5f Export tables: linear column lookups, a column cap, RTF spans
Review follow-ups on top of the table detection:
- Each block's column comes from a precomputed map and a binary search
  instead of scanning every column's members, so pages with many text
  blocks stay linear.
- A table has at most 64 columns. Rows are materialized to every column, so
  a hostile page laid out as a staircase of blocks would otherwise make
  (blocks / 2)^2 cells. Test: a_staircase_of_blocks_is_not_a_huge_table.
- RTF: a row's cell boundaries are written before its cells (RTF requires
  it), and a spanning cell ends at the last column it spans. The test checks
  the Totals row now spans two columns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 07:38:17 -04:00
..
a11y Never crash: filters, fonts, js, optimize and a11y deny the panic lints 2026-10-04 13:06:23 -04:00
annot Fix text editing layout and preserve source PDF font styles (#36) 2026-10-05 07:48:23 -04:00
automation Forms: say so when a document is an XFA form (#60) 2026-10-06 07:22:33 -04:00
compare Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
content Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
cos Never crash: the fuzz job's eleven hangs finish (parser retries, inline images, Type 3 fan-out) 2026-10-05 07:35:38 -04:00
create Never crash: create has no expect calls 2026-10-04 13:12:21 -04:00
crypt Never crash: crypt has no panic paths 2026-10-04 13:06:23 -04:00
edit M7: move and resize existing text boxes in Edit text (#40) 2026-10-06 07:19:53 -04:00
engine Comments: Squiggly underline tool (Highlight flyout, All tools, command) 2026-10-05 18:57:28 -04:00
export Export tables: linear column lookups, a column cap, RTF spans 2026-10-06 07:38:17 -04:00
filters Never crash: filters, fonts, js, optimize and a11y deny the panic lints 2026-10-04 13:06:23 -04:00
fonts Fix text editing layout and preserve source PDF font styles (#36) 2026-10-05 07:48:23 -04:00
forms Fix text editing layout and preserve source PDF font styles (#36) 2026-10-05 07:48:23 -04:00
geom Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
js Merge pull request #16 from storytold/pr/never-crash-small 2026-10-04 14:46:43 -04:00
model Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
ocr Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
optimize Merge pull request #16 from storytold/pr/never-crash-small 2026-10-04 14:46:43 -04:00
organize Never crash: organize has no expect/unreachable 2026-10-04 13:12:20 -04:00
preflight Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
print Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
redact Never crash: deny the panic lints in crates that are already clean 2026-10-04 13:12:21 -04:00
render Forms: say so when a document is an XFA form (#60) 2026-10-06 07:22:33 -04:00
sign Never crash: sign has no expect/unreachable 2026-10-04 13:12:20 -04:00
ui-egui Forms: say so when a document is an XFA form (#60) 2026-10-06 07:22:33 -04:00
xfdf XFDF: gracefully ignore invalid Unicode annotation colours (#48) 2026-10-05 16:36:08 -04:00