This release contains improvements for accessibility, font conversion, image conversion, performance, text selection and the viewer.
Changes since v5.4.624
- Bump the stable version in
pdfjs.configby @timvandermeij in #20617 - Replace the various interfaces in
web/interfaces.jswith proper classes by @Snuffleupagus in #20607 - Add support for Brotli decompression by @calixteman in #20610
- Change all relevant
BasePDFStreamimplementations to take an actualURLinstance by @Snuffleupagus in #20614 - Report loading progress "automatically" when using the
PDFDataTransportStreamclass, and remove thePDFDataRangeTransport.prototype.onDataProgressmethod by @Snuffleupagus in #20615 - Use the ccittfax decoder from pdfium by @calixteman in #20613
- Avoid to have to download the model when toggling the button in the alt-text image settings dialog (bug 2013899) by @calixteman in #20621
- Let the toggle button in the alt-text dialog downloading (resp. delete) the model and enabling (resp. disabling) alt-text guessing (bug 2014167) by @calixteman in #20622
- Flush the text content chunk only on real font changes (bug 2013793) by @calixteman in #20624
- Improve progress reporting in
ChunkedStreamManager, and prevent unnecessary data copy inChunkedStream.prototype.onReceiveDataby @Snuffleupagus in #20627 - Cap the max canvas dimensions in order to avoid to downscale large images in the worker (bug 2014399) by @calixteman in #20628
- Fix
Worker was terminatederror when loading is cancelled by @andriivitiv in #20503 - In tagged pdfs, TH can be either a column header or a row header (bug 2014080) by @calixteman in #20623
- [api-minor] Update the supported Node.js "patch" versions by @Snuffleupagus in #20635
- Ensure that pending requests are resolved when calling
PDFDataTransportStreamReader.prototype.progressiveDoneby @Snuffleupagus in #20634 - Normalize the font name in
getBaseFontMetrics(issue 20246) by @Snuffleupagus in #20637 - Avoid branching in convertBlackAndWhiteToRGBA by @calixteman in #20638
- Set a pages mapper per loaded document by @calixteman in #20640
- Bump library version to
5.5by @Snuffleupagus in #20642 - [api-minor] Update the minimum supported Google Chrome version to 118 by @Snuffleupagus in #20645
- Update dependencies and translations to the most recent versions by @timvandermeij in #20639
- Fix a 'FreeText accessibility' integration test by @calixteman in #20643
- Add firefox-devtools-mcp to let AI agents test and debug in Firefox by @marco-c in #20644
- Convert
PDFPageProxy.prototype.getTextContentto an asynchronous method by @Snuffleupagus in #20648 - Ends the current drawing session when closing the tab (bug 2015385) by @calixteman in #20649
- Start using
Response.prototype.bytes()in the code-base by @Snuffleupagus in #20651 - Move and re-use the
stripPathhelper function more by @Snuffleupagus in #20656 - Update jbig2 decoder (pdfium@0455e822ded1a5537d826703988e986a33d2d4a1) by @calixteman in #20655
- Enable a couple of additional
eslint-plugin-unicornrules by @Snuffleupagus in #20654 - Fix types to make "gulp typestest" succeeding by @calixteman in #20641
- Avoid parsing skipped range requests in
ChunkedStreamManager(PR 10694 follow-up) by @Snuffleupagus in #20652 - Enable the
unicorn/prefer-class-fieldsESLint plugin rule by @Snuffleupagus in #20657 - Add code coverage for unit tests running in node by @calixteman in #20658
- Add a Codecov badge by @calixteman in #20659
- Remove
Object.hasOwnusage from thesrc/core/xref.jsfile by @Snuffleupagus in #20663 - Truncate too long /Decode map entries (issue 20668) by @Snuffleupagus in #20669
- Convert the
PDFObjectsclass to use aMapinternally by @Snuffleupagus in #20673 - Fix the keyboard accessibility of the manage button in the thumbnails view (bug 2015916) by @calixteman in #20675
- fix: support text selection under search highlights by @matt-atticus in #20463
- Fix code coverage line mapping by @calixteman in #20665
- Remove unused
CanvasGraphicsproperties (PR 700 follow-up) by @Snuffleupagus in #20682 - Add an aria-label to the checkboxes in the thumbnails view (bug 2016136) by @calixteman in #20678
- Correctly handle tab/page down when on a menu (bug 2016212) by @calixteman in #20681
- Add an aria-label to the sidebar resizer (bug 2016142) by @calixteman in #20679
- Add support for deleting, cutting, copying and pasting pages (bug 2010830, 2010831) by @calixteman in #20670
- Add the possibility to navigate with the keyboard to go from a checkbox to an other in the thumbnail view (bug 2016007) by @calixteman in #20677
- Set the
annotationTypeautomatically in theAnnotationconstructor by @Snuffleupagus in #20685 - Update dependencies and translations to the most recent versions, and upgrade most packages to new major versions by @timvandermeij in #20661
- Remove unnecessary class constructors in the
srcfolder by @Snuffleupagus in #20684 - Remove unnecessary
Map.prototype.entries()usage by @Snuffleupagus in #20691 - Fix the color of the arrow on buttons when hovering in HCM (bug 2016311) by @calixteman in #20686
- Replace the
getStatIndexhelper, inweb/debugger.mjs, with native functionality by @Snuffleupagus in #20692 - Fix the menu dimensions when on of the item is too long (bug 2018134) by @calixteman in #20694
- Fix the style of the thumbnails in HCM (bug 2016491, bug 2016321, bug 2016323, bug 2016827) by @calixteman in #20693
- Convert
ChunkedStreamManager.prototype.sendRequestto an asynchronous method by @Snuffleupagus in #20660 - Update the page count in the UI when some changes are done (bug 2018125) by @calixteman in #20695
- Reduce duplication when parsing
searchParamsin thegetPdfFilenameFromUrlfunction by @Snuffleupagus in #20690 - Add code coverage for font tests by @calixteman in #20688
- Add some unit tests for functions in image_utils.js by @calixteman in #20698
- Update quickjs to fa628f8c523ecac8ce560c081411e91fcaba2d20 by @calixteman in #20708
- Slightly shorten some code in the
src/scripting_api/folder by @Snuffleupagus in #20699 - Only show the status bar in the views manager when it's in thumbnails mode (bug 2016656) by @calixteman in #20696
- Use
Map.prototype.getOrInsert()in thegetNewAnnotationsMaphelper by @Snuffleupagus in #20702 - Use
Map.prototype.getOrInsert()in the_getPageAdvancemethod by @Snuffleupagus in #20704 - Use
Map.prototype.getOrInsertComputed()in theensureDebugMetadatahelper by @Snuffleupagus in #20706 - Use
Map.prototype.getOrInsert()in the#collectFieldObjectsmethod by @Snuffleupagus in #20703 - Use
Map.prototype.getOrInsert()in the#collectParentsmethod by @Snuffleupagus in #20705 - Remove the leading slash in windows file path when instrumenting js files for ccov by @calixteman in #20710
- Use
FinalizationRegistryunconditionally in thesrc/scripting_api/app.jsfile by @Snuffleupagus in #20709 - Use
Map.prototype.getOrInsertComputed()in theeditorStatsgetter by @Snuffleupagus in #20711 - Use
Map.prototype.getOrInsert()more in thesrc/display/folder by @Snuffleupagus in #20716 - Correctly generate the NormalizeWithNFKC string in generic build by @calixteman in #20712
- Add keyboard shortcuts for copying/cutting/deleting the pages (bug 2018139, bug 2010831) by @calixteman in #20697
- Use
Map.prototype.getOrInsertComputed()in thesrc/display/api.jsfile by @Snuffleupagus in #20717 - Use @eslint/json in order to lint the json files by @calixteman in #20720
- Reset transfer functions when entering in a new group by @calixteman in #20727
- After cut & paste, the thumbnail must be correctly rendered (bug 2018162) by @calixteman in #20725
- Reduce allocations and function creation when using
getOrInsertandgetOrInsertComputedby @Snuffleupagus in #20726 - Update Jasmine to version 6.0.0 by @calixteman in #20719
- Remove unused
lastCodeproperty from theLZWStreamclass (PR 324 follow-up) by @Snuffleupagus in #20733 - Include transfers correctly in the "GetOperatorList" message (PR 16588 follow-up) by @Snuffleupagus in #20734
- Don't expand/collapse the entire outline when shift-clicking on the triangles (PR 20508 follow-up) by @Snuffleupagus in #20740
- Don't check for surrogates when verifying the chars to normalize by @calixteman in #20745
- Bump basic-ftp from 5.1.0 to 5.2.0 by @dependabot[bot] in #20737
- Remove useless page-id attribute in thumbnails by @calixteman in #20731
- Slightly move the resizer on the sidebar (bug 2019585) by @calixteman in #20741
- Tweak the background color of the sidebar (bug 2010822) by @calixteman in #20743
- Add a gh action in order to create a PR containing a m-c l10n update by @calixteman in #20749
- l10n: Update locale files by @github-actions[bot] in #20752
- Automatically remove unmaintained locales when running
gulp importl10nby @Snuffleupagus in #20755 - Add an integration test for PR 20740 by @calixteman in #20750
- Make the 'add file' button not hidden but just not visible in order to fix the layout by @calixteman in #20748
- Fix tooltips on thumbnails and checkbox (bug 2019714) by @calixteman in #20746
- Remove scientific notation parsing. by @jrmuizel in #20736
- Add a script for searching the unused fluent ids by @calixteman in #20747
- Fix the broken regular expression in the
decodehelper in thegetPdfFilenameFromUrlfunction (issue 20664) by @Snuffleupagus in #20757 - Fix scrolling of outline item into view (PR 20495 follow-up) by @Snuffleupagus in #20742
- Bump fast-xml-parser from 5.3.5 to 5.4.1 by @dependabot[bot] in #20766
- Bump minimatch by @dependabot[bot] in #20762
- Fix the page sidebar height by @calixteman in #20758
- Tweak few elements: dimensions and the checkbox color in the new sidebar by @calixteman in #20761
- Slightly shorten some code in the
src/core/function.jsfile by @Snuffleupagus in #20738 - Improve the
PDFDataRangeTransportunit-tests by @Snuffleupagus in #20756 - Remove dependency to yargs and use node:utils parseArgs by @calixteman in #20768
- Update dependencies to the most recent versions by @timvandermeij in #20769
- Add an integration test for the issue fixed in #20742 by @calixteman in #20767
- Avoid to scroll too much when the thumbnail is at the bottom of the sidebar (bug 2016693) by @calixteman in #20751