From ffbbee597a4dcd1a3fe86a38b09be4e463e8b15b Mon Sep 17 00:00:00 2001 From: David Date: Sat, 14 Dec 2024 10:13:02 +0100 Subject: [PATCH] #1517 Fix ordered lists (#1568) * adds test cases for ordered lists * fixes broken labels for ordered lists (#1517) * adds test for sub-lists (ordered and unordered) * update changelog for fix of #1517 --------- Co-authored-by: David --- CHANGELOG.md | 4 +++ lib/mixins/text.js | 5 ++-- ...text-spec-js-text-list-lettered-1-snap.png | Bin 0 -> 17116 bytes ...text-spec-js-text-list-numbered-1-snap.png | Bin 0 -> 16713 bytes ...text-list-with-sub-list-ordered-1-snap.png | Bin 0 -> 20512 bytes ...xt-list-with-sub-list-unordered-1-snap.png | Bin 0 -> 20820 bytes tests/visual/text.spec.js | 28 ++++++++++++++++++ 7 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 tests/visual/__image_snapshots__/text-spec-js-text-list-lettered-1-snap.png create mode 100644 tests/visual/__image_snapshots__/text-spec-js-text-list-numbered-1-snap.png create mode 100644 tests/visual/__image_snapshots__/text-spec-js-text-list-with-sub-list-ordered-1-snap.png create mode 100644 tests/visual/__image_snapshots__/text-spec-js-text-list-with-sub-list-unordered-1-snap.png diff --git a/CHANGELOG.md b/CHANGELOG.md index a085df2..eb58c75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## pdfkit changelog +### Unreleased + +- Fix index not counting when rendering ordered lists (#1517) + ### [v0.15.1] - 2024-10-30 - Fix browserify transform sRGB_IEC61966_2_1.icc file diff --git a/lib/mixins/text.js b/lib/mixins/text.js index d78f446..ad4273d 100644 --- a/lib/mixins/text.js +++ b/lib/mixins/text.js @@ -153,12 +153,11 @@ export default { } }; - const drawListItem = function(listItem) { + const drawListItem = function(listItem, i) { wrapper = new LineWrapper(this, options); wrapper.on('line', this._line); level = 1; - let i = 0; wrapper.once('firstLine', () => { let item, itemType, labelType, bodyType; if (options.structParent) { @@ -225,7 +224,7 @@ export default { for (let i = 0; i < items.length; i++) { - drawListItem.call(this, items[i]); + drawListItem.call(this, items[i], i); } return this; diff --git a/tests/visual/__image_snapshots__/text-spec-js-text-list-lettered-1-snap.png b/tests/visual/__image_snapshots__/text-spec-js-text-list-lettered-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..27deba7ec6f61256e2d793c74580f74bc145ce1a GIT binary patch literal 17116 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�^dU>Xp78GtJfYSdl0r2uikoNl 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 R4x)O)8JeEV`uWoB{{pn%9Mb>* literal 0 HcmV?d00001 diff --git a/tests/visual/__image_snapshots__/text-spec-js-text-list-numbered-1-snap.png b/tests/visual/__image_snapshots__/text-spec-js-text-list-numbered-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad335ad88e5e44bd1f97143892e8cbb772d5068 GIT binary patch literal 16713 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 yrbIKY? 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 X!%Iz;nOrrpnbdveKjeIW?DzixErH6y literal 0 HcmV?d00001 diff --git a/tests/visual/text.spec.js b/tests/visual/text.spec.js index 4c504df..b44d2cd 100644 --- a/tests/visual/text.spec.js +++ b/tests/visual/text.spec.js @@ -62,6 +62,34 @@ describe('text', function() { return runDocTest(function(doc) { doc.font('tests/fonts/Roboto-Regular.ttf'); doc.list(['Foo\nBar', 'Foo\rBar', 'Foo\r\nBar'], [100, 150]); + }); + }); + + test('list (numbered)', function() { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Regular.ttf'); + doc.fillColor('#000').list(['One', 'Two', 'Three'], 100, 150, {listType: 'numbered'}); + }); + }); + + test('list (lettered)', function() { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Regular.ttf'); + doc.fillColor('#000').list(['One', 'Two', 'Three'], 100, 150, {listType: 'lettered'}); + }); + }); + + test('list with sub-list (unordered)', function() { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Regular.ttf'); + doc.fillColor('#000').list(['One', ['One.One', 'One.Two'], 'Three'], 100, 150); + }) + }) + + test('list with sub-list (ordered)', function() { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Regular.ttf'); + doc.fillColor('#000').list(['One', ['One.One', 'One.Two'], 'Three'], 100, 150, {listType: 'numbered'}); }) }) });