Skip to content

v0.9.12

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Aug 23:17
· 17 commits to main since this release
6820ed8

PeachPDF 0.9.12 Release Notes

Release date: August 14, 2026
Full changelog: v0.9.11...v0.9.12
Release tag: v0.9.12

PeachPDF 0.9.12 is a small, focused correctness release closing out a cluster of border-collapse: collapse table bugs: a rowspan cell inside a multi-row repeating <thead>/<tfoot> no longer drops its own declared border from CSS 2.1 §17.6.2 resolution, no longer mis-positions the cell that follows it, and now stretches to its full spanned height; and a collapsed table's border no longer bleeds past an interior grid line into the neighboring cell's background.

Highlights

Collapsed table border no longer bleeds past an interior grid line (#744)

  • GetGridLineY/GetGridLineX centered each collapsed-border segment on one edge of an interior grid line's row/column overlap band instead of the band's true center — border-collapse deliberately overlaps two adjacent rows/columns by the whole resolved border width and paints the border once, last, to hide that overlap, so covering only half the band left a sliver of the later-painted neighbor's background showing past the border line
  • Fixed for ordinary body rows/columns and for a repeating <thead>/<tfoot>'s own boundary-to-body line, including where a vertical column divider spans a repeated group's full row range and meets that boundary at a corner

TableGrid.Build's column placement is now rowspan-occupancy-aware (#736)

  • A rowspan cell starting in one row of a multi-row <thead>/<tfoot> and reaching into a later row of the same group left every cell after it in that row placed at the wrong column in the table's internal border-resolution grid — any border that mis-placed cell declared was silently dropped as a CSS 2.1 §17.6.2 resolution candidate, for both the group's own internal grid line and, if the group repeats across pages, its boundary to the table body
  • TableGrid.Build now works out each cell's real column by tracking rowspan occupancy directly (the standard HTML table "downward-growing cell" placement algorithm), rather than trusting a row's own Boxes list order, which only a body row's InsertEmptyBoxes padding kept accurate

Cell layout position and height are now rowspan-occupancy-aware too (#740, #742)

  • The same class of bug as #736, one level deeper: a cell following a rowspan gap in a detached <thead>/<tfoot> row wasn't just dropped from border resolution, it actually rendered at the wrong horizontal position and width, and corrupted column-width distribution for the whole table by attributing its content to the wrong column
  • Separately, a rowspan cell in a <thead>/<tfoot> never had its own box stretched to cover every row it spans, keeping only its natural single-row content height even when the rows it spans were visibly taller
  • Both are now fixed by sharing TableGrid's own rowspan-occupancy placement computation with ordinary cell layout, instead of layout using a separate, simpler (and buggy) column-counting path

Breaking changes & migration notes

  • A collapsed table's border no longer leaves a thin sliver of a neighboring cell's background showing past an interior border-bottom/border-right/etc. line — a document that happened to rely on that gap for visual spacing will look different.
  • A rowspan cell inside a multi-row <thead>/<tfoot> that reaches into a later row of the same group now renders every cell after it at its correct column and width (previously off by the rowspan's own column count), and the rowspan cell itself now stretches down to cover every row it spans instead of keeping only its natural single-row height.

See Forward compatibility in the HTML/CSS support docs for how PeachPDF treats this class of change going forward.

All Merged Pull Requests

  • Fold 0.9.11 migration notes into published release notes — #739
  • Make TableGrid.Build's column placement rowspan-occupancy-aware — #741
  • Make cell layout position and height rowspan-occupancy-aware, not just the border grid — #743
  • Fix collapsed table border segments bleeding past interior grid lines — #745