diff --git a/CHANGELOG.md b/CHANGELOG.md index 635e1112..1eafca26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ - Add bbox and placement options to PDFStructureElement for PDF/UA compliance - Extend `roundedRect` with `borderRadius` as number for all corners or per-corner array (CSS order) +### [v0.18.1] - 2026-05-29 + +- Fix accessibility: scope in TH element +- ### [v0.18.0] - 2026-03-14 - Fix garbled text copying in Chrome/Edge for PDFs with >256 unique characters (#1659) diff --git a/lib/structure_element.js b/lib/structure_element.js index 01644379..3db9cd4b 100644 --- a/lib/structure_element.js +++ b/lib/structure_element.js @@ -59,6 +59,14 @@ class PDFStructureElement { data.A = attrs; } + if (typeof options.scope !== 'undefined') { + data.A = { + ...(data.A || {}), + O: 'Table', + Scope: options.scope, + }; + } + this._children = []; if (children) { diff --git a/package.json b/package.json index 658eedf3..665cd9c6 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "document", "vector" ], - "version": "0.18.0", + "version": "0.18.1", "homepage": "http://pdfkit.org/", "author": { "name": "Devon Govett", diff --git a/tests/unit/structure_element.spec.js b/tests/unit/structure_element.spec.js index 530ae89a..e2df8e83 100644 --- a/tests/unit/structure_element.spec.js +++ b/tests/unit/structure_element.spec.js @@ -150,5 +150,33 @@ describe('PDFStructureElement', () => { `endobj`, ]); }); + test('should contain scope on TH tag', () => { + const docData = logData(document); + + const table = document.struct('Table'); + + const thead = document.struct('THead'); + + table.add(thead); + + const trHead = document.struct('TR'); + + thead.add(trHead); + + const th1 = document.struct('TH', { scope: 'Column' }); + + th1.add(document.struct('P', () => document.text('Test'))); + + trHead.add(th1); + + document.addStructure(table); + + document.end(); + + expect(docData).toContainChunk([ + '<<\n/S /TH\n/A <<\n/O /Table\n/Scope /Column\n>>\n/P 10 0 R\n/K [12 0 R]\n>>', + `endobj`, + ]); + }) }); });