417 Commits

Author SHA1 Message Date
ajaykrdas
5505b6db87
Accessibility Issue: CS / cs Operator Error in Tagged Table (#1666)
* Accessibility Issue: CS / cs Operator Error in Tagged Table #1640

* Fix Table Accessibility Issue: Operator CS/cs not allowed in this current state

* revert modifications at debug line
2025-12-22 14:54:06 -03:00
Adrian Kowalczewski
0b01ef4146
Accessibility: Fixed Link annotation is not nested inside a Link structure element (#1664)
* Accessibility: Fixed Link annotation is not nested inside a Link structure element

* Accessibility: Fixed Link annotation is not nested inside a Link structure element

* Changelog

* Fix links leakage into subsequent structures

* Prettier

---------

Co-authored-by: akowalczewski <akowalczewski@gn.com>
2025-12-18 10:53:27 -03:00
markbruce
d0108157f1
fix: use dynamic count for beginbfrange declaration (#1660)
* fix: use dynamic count for beginbfrange declaration

Fixes garbled text copying in Chrome/Edge for PDFs with >256 unique characters

* Add changelog line

Addressed an issue with garbled text copying in Chrome/Edge for PDFs containing more than 256 unique characters.

* test: add tests for beginbfrange count declaration

Add test cases to verify that the beginbfrange count declaration
in ToUnicode CMap matches the actual number of bfrange entries.

- Test for fonts with >256 characters (multiple ranges)
- Test for fonts with <=256 characters (single range)

These tests ensure the fix for the beginbfrange count bug is
correct and prevent regression.

Related to #1659

* Revert "test: add tests for beginbfrange count declaration"

This reverts commit dda6f4a762acbaa09f5986502c494c97959c7643.

* Rewrite tests for beginbfrange count declaraton. Fix code style issue.

* fix(tests): remove unused variables in font.spec.js

Replace for loops with unused match variables with spread operator
to directly get array length, fixing ESLint no-unused-vars errors.

- Replace loop counting with [...rangeMatches].length
- Fixes ESLint errors at lines 152 and 197 in tests/unit/font.spec.js
- All tests pass successfully

---------

Co-authored-by: zhang_xiaoning <zxn@winning.com.cn>
2025-11-30 21:52:23 -03:00
Luiz Américo Pereira Câmara
12439175d7 Code cleanup in text.js 2025-08-30 15:13:31 -03:00
Luiz Américo Pereira Câmara
60cd4b65e1 Fix unbalanced sectionStart/End events when text starts a new page - #1596 2025-08-30 14:44:49 -03:00
Luiz Américo Pereira Câmara
4b2030eedd Streamline AFMFont parsing. Do not keep contents in memory 2025-05-03 00:12:01 -03:00
Luiz Américo Pereira Câmara
715c2e39aa Remove AFMFont.charWidths 2025-05-03 00:03:33 -03:00
Luiz Américo Pereira Câmara
194f2eff65 Remove AFMFont.open 2025-05-03 00:02:54 -03:00
Luiz Américo Pereira Câmara
f4edf3d405 Do not assign match variable on condition check 2025-05-02 23:20:21 -03:00
Jake Holland
54e6600f1c
Fix precision rounding issues in LineWrapper (#1595)
* Fix further LineWrapper precision issues

* add test of bounded text precision issue

* add rowSpanning table example

* add failure threshold

* implement toContainText jest matcher

* create a unit test for bounded text precision

* remove round up rounding code path

---------

Co-authored-by: Luiz Américo Pereira Câmara <blikblum@users.noreply.github.com>
2025-05-02 23:05:11 -03:00
chronospatian
f3c1776850
Fix table with null text (#1609)
* Handle null values in table text

* Add test case for null value in table text

* Update CHANGELOG.md
2025-04-17 06:18:58 -03:00
Luiz Américo Pereira Câmara
a76ab284a8 Apply prettier formatting 2025-04-12 12:57:31 -03:00
Luiz Américo Pereira Câmara
15087ea8c3 Cleanup / simplify code 2025-04-12 12:43:17 -03:00
Luiz Américo Pereira Câmara
c5606d40e7 Fix updating y position when adding a image 2025-04-12 10:34:43 -03:00
Jake Holland
033ba3426b
Add support for tables (#1577)
* Add page size utilities

- Added page.contentWidth
- Added page.contentHeight

* Add table support

- Tables support cell customization (including colors)
- Tables also support rotatable text (with alignment support)
- Tables have accessibility support

* chore: fix code generation context

- code generation now respects the current document positioning to allow use of page dependent operations

* chore: remove comments from build

* removed unnecessary config optimisations

* Optimize table minification

* Performance improvements to tables

* Improve font handling in tables
2025-02-24 07:49:25 -03:00
Jake Holland
ee7208b4ea
Fix page cascade options when text overflows (#1597) 2025-02-05 07:49:58 -03:00
Jake Holland
868e9be3c4
Fix text overflow issues in boundsOfString (#1594) 2025-01-27 16:45:20 -03:00
Libor M.
1abb3541e0 Fix fonts without a postscriptName #1590 2025-01-18 14:54:10 +01:00
Jake Holland
f4466085d3
Enable rotatable text (#1589) 2025-01-15 14:06:15 +01:00
Jake Holland
73d86db95e
Fix side normalize when non-object (#1585) 2025-01-13 13:04:06 +01:00
Jake Holland
36549b3946
Add support for dynamic sizing (#1576)
* Add support for dynamic sizing

- Enable defining sizes using any units (defaulting to Points)
- This also allows us to define sizes based on the current font context i.e. em's
- The new public `sizeToPoint` method allows users to also interact with these sizes to generate the correct point sizes

* Optimise side normalization

* Added test case for one margin being undefined
2025-01-12 18:17:13 -03:00
Jake Holland
40a0f383a7
Fix precision rounding issues in LineWrapper (#1583)
Handle JS quirks with large decimal precision checks resulting from the calculations of next lines in the LineWrapper
2025-01-11 13:16:17 +01:00
Libor M.
bbe4ab9305 Add Name property for set custom icon for note() #1319 2024-12-28 16:00:38 +01:00
Libor M.
cf5a77469f Fix for embedding fonts into PDF (font name must not contain spaces) #1314 2024-12-28 14:05:02 +01:00
Libor M.
704a005ac2 Fix font cache collision identical metadata for different fonts #1330 2024-12-28 13:34:00 +01:00
Kevin Hendel
1b678c3e3d
Indent after linebreak (#879)
* add indentAllLines option to indent all lines of a paragraph instead of only the first one

* update comments

* Update CHANGELOG.md

---------

Co-authored-by: Libor M. <liborm85@gmail.com>
2024-12-27 15:52:48 +01:00
Libor M.
133a321a56 Add support to scale text horizontally
inspired by #445
2024-12-27 15:34:22 +01:00
Libor M.
42172c5102 Fix font cache collision for fonts with missing postscript name or bad TTF metadata #1384 #691 2024-12-27 12:07:52 +01:00
Adrian Rollett
8b20d0742a
Fix sets tab order to "Structure" when a document is tagged #1260 (#1449)
* Set tab order when document is tagged

* Update approach and add inverse test

* Revert page dictionary setup

* Update lib/mixins/markings.js

* Update kitchen-sink-accessible.pdf

* Update CHANGELOG.md

---------

Co-authored-by: Libor M. <liborm85@gmail.com>
2024-12-26 14:35:14 +01:00
Libor M.
3ccf3b8d90 Add support for spot colors #756 2024-12-26 13:11:07 +01:00
Benjamin Bloomfield
eecfb4c97a
Fix measuring text when OpenType features are passed in to .text() (#1492)
* Update text.js

to fix measuring text when opentype features are passed in to .text()

* added simple test

* Update CHANGELOG.md

---------

Co-authored-by: Libor M. <liborm85@gmail.com>
2024-12-25 07:45:56 +01:00
Devon Govett
f238d1b107
Bump fontkit and linebreak deps (#1367)
* Bump fontkit and linebreak deps

* Bump fontkit to 2.0.0

* Bump

* Drop old node versions

* Bump testing dependencies

* Update pdfjs

* fix jest to compatibility with restructure, update fontkit, refresh snapshots

* Update CHANGELOG.md

---------

Co-authored-by: Libor M. <liborm85@gmail.com>
2024-12-16 08:36:25 +01:00
Libor M.
bcc64c2f3b Fix modify time comparison check equality embedded files 2024-12-15 13:55:19 +01:00
Artem Shibakov
24b4947226
fix missing acroform font identification (#1465)
undefined !== null but undefined == null
2024-12-14 14:29:25 +01:00
Libor M.
75a8dbc0aa Fix CIDSet generation only for PDF/A1 subset #1561 2024-12-14 14:06:24 +01:00
Florian Bischoff
bc59dd21e3
fix: pdf/a compliance of attachments (#1562)
* fix: pdf/a compliance of attachments

* fixed tests

* update docs

---------

Co-authored-by: Libor M. <liborm85@gmail.com>
2024-12-14 12:52:21 +01:00
David
ffbbee597a
#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 <filecage@users.noreply.github.com>
2024-12-14 10:13:02 +01:00
Libor M.
831179e067 Fix browserify transform sRGB_IEC61966_2_1.icc file 2024-08-20 18:25:49 +02:00
Noah
f2e9b168e0
Bugfix: File Cache Equality Check Incorrectly Compares Dates (#1544)
* refactors to correctly check if dates are equal

* Update attachments.js

* fixes lint error

---------

Co-authored-by: utanapishtim <utnapishtim.utanapishtim@gmail.com>
2024-08-13 20:39:57 -03:00
Andrei Augustin
76cdedd967
Update acroform.js
Updated error text document.initForms() to document.initForm() as correct method name is initForm()
2024-07-16 17:36:34 +03:00
Luiz Américo Pereira Câmara
309cdd6216 Move icc profile file to mixins data subfolder 2024-03-23 22:22:03 -03:00
Luiz Américo Pereira Câmara
d487253fcc Remove deprecated method write 2024-03-23 22:22:03 -03:00
Yeechan Lu
946f9cf6dc
Generate ToUnicodeMap bfrange in multiple ranges (#1498) (#1499)
* Generate ToUnicodeMap bfrange in multiple ranges (#1498)

This resolves #1498.

* Add unit test for bfrange lines in toUnicodeMap

* Add changelog line
2024-02-26 10:18:47 -03:00
Rico Brase
485b7e6bee
Fix Acroforms - setting an option to false will still apply the flag (#1496)
* Add an option check to acroform mixin _resolveFlags().

This resolves #1495.

* Reworked fix to remove flags from options, if they are falsey.

* Added unit test for ignoring false flags in acroforms

* Added entry for removing false flags in changelog.
2024-02-07 20:28:58 -03:00
Olli Etuaho
a655194de2
Prevent adding identity transforms to the document (#1493)
This makes the resulting PDF files smaller. It's cumbersome to filter out all commands that could result in identity transforms in code that's using PDFKit, so it makes sense to have the check in the transform() function.
2024-01-23 13:36:54 -03:00
Rudolf Biczok
1f70b450a2
Replace soft hyphen with visible hyphen if line break demands it (#1488)
* Replace soft hyphen with visible hyphen if line break demands it

* Add changelog entry for #457

* Add soft hyphen support in readme
2024-01-02 08:00:59 -03:00
Balearica
2d5b4160ad
Made regex quantifier lazy to resolve #381 (#1349)
Co-authored-by: Your Name <you@example.com>
2024-01-02 08:00:22 -03:00
David
ebf404e4ae
#1486 fix newline items in lists (#1487)
* adds test case with line-breaks in list items

reproduces #1486

* use LineBreaker per item and only draw `firstLine` once

fixes #1486

* boyscout: consistent naming

* boyscout: test multiple line break versions

* update changelog for fix of #1486

---------

Co-authored-by: David <filecage@users.noreply.github.com>
2023-12-22 09:49:26 -03:00
Andrei Augustin
408dc4e9ba
Add PDF/UA subset (#1485)
* Added PDF/UA subset and its metadata

* Added PDF/UA metadata unit tests

* Added PDF/UA subset to accessibility docs

* Updated change log for PDF/UA subset
2023-12-17 16:11:46 -03:00
Luiz Américo
5bbd9a18cb
Support Jpeg Exif Orientation (#1482)
Co-authored-by: Franklin Strube <fstrube@morevang.com>
Co-authored-by: Luiz Américo Pereira Câmara <blikblum@users.noreply.github.com>
2023-12-03 07:48:00 -03:00