NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2102 most downloaded on npm
Generic build of Mozilla's PDF.js library.
Last release today
03 Oct 2026
Ships on a steady schedule
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
1566 releases · first in 2014
This release contains improvements for annotation rendering, font conversion, form handling, pattern rendering, performance, text selection and the vi
This release contains improvements for annotation rendering, font conversion, form handling, pattern rendering, performance, text selection and the viewer.
pdfjs.config by @timvandermeij in #21843src/core/xml_parser.js by @timvandermeij in #21848catch methods by @Snuffleupagus in #21849info logging from the "GetOperatorList"/"GetTextContent" handlers (issue 21836) by @Snuffleupagus in #21840PDFDocumentProperties.prototype.#parsePageSize by @Snuffleupagus in #21856ScreenAnnotation.#isPlayAction method by @Snuffleupagus in #21862fallback parameter from L10n.prototype.get by @Snuffleupagus in #21857collectActions function by @Snuffleupagus in #21863operatorList to the operationsFilter callback function (issue 20399) by @Snuffleupagus in #21868deployment: false on the code-coverage environment jobs by @calixteman in #21853MediaAnnotation.prototype._getContentType by @Snuffleupagus in #21887seacMap and seacs structures into Maps by @Snuffleupagus in #21884MessageHandler class by @Snuffleupagus in #21883CmdCache, NameCache, and RefCache to use Maps by @Snuffleupagus in #21888@babel/runtime dependency by @calixteman in #21894kleur with util.styleText by @calixteman in #21895@napi-rs/canvas for PNG decoding in integration tests by @calixteman in #21896Ref.fromString more strict, by not accepting "bad" arguments by @Snuffleupagus in #21898interpolate helper, such that it can be re-used more in src/core/function.js code by @Snuffleupagus in #21905CFFOffsetTracker offsets into a Map by @Snuffleupagus in #21910missingGlyphs, used in the Font class, into a Set by @Snuffleupagus in #21911forEach callback functions with arrow functions by @Snuffleupagus in #21915ViewHistory.prototype.{get, set} methods by @Snuffleupagus in #21914importPrintedAppearances function, in the src/core/worker.js file (PR 21858 follow-up) by @Snuffleupagus in #219236.4 by @Snuffleupagus in #21929OptionalContentConfig, FontLoader, and FontFaceObject code when building for workers by @Snuffleupagus in #21926PDFDocumentProperties dialog by @Snuffleupagus in #21938PDFDocumentProperties tests (PR 21938 follow-up) by @Snuffleupagus in #21941waitForTooltipToBe helper function in the annotation integration tests by @timvandermeij in #21943FontFaceObject.prototype.getPathGenerator cache into a Map by @Snuffleupagus in #21947_loadTestFont definition in the FontLoader.prototyp._prepareFontLoadEvent method by @Snuffleupagus in #21948waitForTextToBe helper function in the editor undo bar integration tests by @timvandermeij in #21949FontLoader.prototype.isFontLoadingAPISupported getter by @Snuffleupagus in #21950waitForTextToBe helper function in the editor alert bar integration tests by @timvandermeij in #21951FontLoader class by @Snuffleupagus in #21952waitForTextToBe helper function in the remaining integration tests by @timvandermeij in #21953CFFDict classes to use Maps, rather than plain Objects by @Snuffleupagus in #21955IdentityCMap.prototype.getMap as unreachable by @Snuffleupagus in #21956charCodeToGlyphId, used in various font-code, into a Map by @Snuffleupagus in #21961createWithNullProto helper from the CFFParser unit-tests by @Snuffleupagus in #21973compileFontInfo by @Snuffleupagus in #21976page.focus in integration tests by @calixteman in #21982Differences Array, used with non-composite fonts, into a Map by @Snuffleupagus in #21984toFontChar Array, in the Font class, into a Map by @Snuffleupagus in #21985unicorn/prefer-combined-guards linting rule by @timvandermeij in #21990unicorn/prefer-set-methods linting rule by @timvandermeij in #21992PatternInfo class (PR 20340 follow-up) by @Snuffleupagus in #22003unicorn/prefer-smaller-scope linting rule by @timvandermeij in #21993unicorn/prefer-short-arrow-method linting rule Note truncated.
One column per quarter.
This release contains improvements for accessibility, annotation editing, annotation rendering, font conversion, image decoding, performance, text sel
This release contains improvements for accessibility, annotation editing, annotation rendering, font conversion, image decoding, performance, text selection and the viewer.
pdfjs.config by @timvandermeij in #21655src/ folder by @Snuffleupagus in #21661getJSActions to return data in a Map by @Snuffleupagus in #21664EventBus to use Map/Set internally by @Snuffleupagus in #21673if statements with ternary operators by @Snuffleupagus in #21672ViewHistory class a little bit by @Snuffleupagus in #21678Field.prototype.setAction (PR 12569 follow-up) by @Snuffleupagus in #21691getFieldObjects to return data in a Map by @Snuffleupagus in #21671Menu class by @Snuffleupagus in #21690Menu class by @calixteman in #21706Menu constructor a tiny bit by @Snuffleupagus in #21700regexp/no-super-linear-move ESLint rule by @calixteman in #21708eslint-plugin-regexp rules by @calixteman in #21710MathClamp helper in the src/core/annotation.js file by @Snuffleupagus in #21715PDFViewerApplication._initializeAutoPrint to handle getJSActions returning a Map (PR 21664 follow-up) by @Snuffleupagus in #21716SCALE_MATRIX into CanvasGraphics and initialize its DOMMatrix lazily (issue 21720) by @Snuffleupagus in #21721TranslatedFont.prototype.loadType3Data to an asynchronous method by @Snuffleupagus in #21719file parameter in the viewer by @calixteman in #21718dateActionsCache/scandCache in the src/scripting_api/util.js file by @Snuffleupagus in #21681Parser class, to a Map by @Snuffleupagus in #21727charProcOperatorList, used with Type3 fonts, to a Map by @Snuffleupagus in #21730getPermissions to return data in a Set by @Snuffleupagus in #21738RefSetCache class to RefMap by @Snuffleupagus in #21737toBeTruthy()/toBeFalsy() matchers with more specific ones in the unit-tests by @Snuffleupagus in #21739RefSet and RefMap to use actually private class fields by @Snuffleupagus in #21728buildSymbolGlyphIdEncoding (PR 21726 follow-up) by @Snuffleupagus in #21740Array.from() usage by @Snuffleupagus in #21742stringToBytes helper in the encodeASCIIString function by @Snuffleupagus in #21743[$getChildren] methods by @Snuffleupagus in #21736rect modification in the CanvasGraphics.prototype.beginAnnotation method by @Snuffleupagus in #21729unicorn/no-incorrect-query-selector ESLint plugin rule by @Snuffleupagus in #21754PartialEvaluator.prototype.setGState method by @Snuffleupagus in #21764getRawData API methods when building INTERNAL_VIEWER by @Snuffleupagus in #21772typeof check in Field.prototype.currentValueIndices by @Snuffleupagus in #21774Stepper.prototype.getNextBreakPoint method by @Snuffleupagus in #21762StructElementNode.prototype.tableAttributes getter return a Map by @Snuffleupagus in #21761Array.prototype.map() callbacks by @Snuffleupagus in #21780Array.prototype.filter(Boolean) more, when filtering out truthy values by @Snuffleupagus in #21781XRefMock unit-test helper by @Snuffleupagus in #21782unicorn/no-multiple-promise-resolver-calls linting rule by @timvandermeij in #21786getVisibleElements, once by @Snuffleupagus in #21787!lzwState check in LZWStream.prototype.readBlock by @Snuffleupagus in #21788Uint8Array.fromHex in the CFFParser unit-tests setup by @Snuffleupagus in #21793watchScroll helper function a little bit by @Snuffleupagus in #21796JpegImage.canUseImageDecoder return value consistency by @Snuffleupagus in #21800TextDecoder instances used by the stringToPDFString helper by @Snuffleupagus in #21801BaseStream.prototype.getBytes by @Snuffleupagus in #21804TextDecoder/TextEncoder instances used when compiling/decompiling font-data by Note truncated.
This release contains improvements for annotation rendering, annotation editing, font conversion, image conversion, performance, SMask handling and te
This release contains improvements for annotation rendering, annotation editing, font conversion, image conversion, performance, SMask handling and text selection.
pdfjs.config by @timvandermeij in #21510SignaturePropertiesManager improvements (PR 21247 follow-up) by @Snuffleupagus in #21524web-digital_signature_properties_manager import map (PR 21247 follow-up) by @Snuffleupagus in #21529PDFThumbnailViewer.prototype.#updateStatus by @Snuffleupagus in #21531#getPageL10nArgs helper in the PDFThumbnailView.prototype.addPasteButton method by @Snuffleupagus in #21534bannerStateForResults helper into the SignaturePropertiesManager class (PR 21247 follow-up) by @Snuffleupagus in #21533this.#signatureData = null; lines in src/core/document.js by @Snuffleupagus in #21536MathClamp helper in the PDFImage.prototype.getComponents method by @Snuffleupagus in #21537getSignatures and getSignatureData (PR 21247 follow-up) by @Snuffleupagus in #21541id-attribute in a string by @Snuffleupagus in #21545Type1Parser.prototype.extractFontProgram method by @Snuffleupagus in #21544Intl.Segmenter for the entire-word search matching by @calixteman in #21521MurmurHash3_64.update() by @timvandermeij in #21546FakeSignatureVerifier for development mode and TESTING builds (PR 21247 follow-up) by @Snuffleupagus in #21543getRotationMatrix core utility function by @timvandermeij in #21547indexOf calls with startsWith by @Snuffleupagus in #21554for...of even more in the code-base by @Snuffleupagus in #21560return await a bit more in the src/core/ folder by @Snuffleupagus in #21563getOrPutComputed method in the RefSetCache class by @Snuffleupagus in #21576CipherTransformFactory.prototype.createCipherTransform by @Snuffleupagus in #21581Map.prototype.getOrInsertComputed more in the web/ folder by @Snuffleupagus in #21586getOrInsertComputed in the CanvasGraphics.prototype._getPattern method by @Snuffleupagus in #21590Iterator.prototype.join in the code-base by @Snuffleupagus in #21585bCache, used with /Mesh Shadings by @Snuffleupagus in #21596CompiledFont glyph/charCode caches to use Maps by @Snuffleupagus in #21595getDestinations to return data in a Map by @Snuffleupagus in #21597getPathJs and hasBuiltPath methods in the CompiledFont class by @Snuffleupagus in #21599fieldValue = null when saving (issue 21582) by @Snuffleupagus in #21594Hm by @calixteman in #21606.gitattributes by @timvandermeij in #21603getViewerPreferences to return data in a Map by @Snuffleupagus in #21607NS_DATASETS constant more in the src/core/xfa/bind.js file by @Snuffleupagus in #21615Ref.prototype.toString method a tiny bit by @Snuffleupagus in #21618getOpenAction to return data in a Map by @Snuffleupagus in #21621objectSize helper function by @Snuffleupagus in #21624XRef class to use private fields by @Snuffleupagus in #21631toBeNull() matcher consistently in the unit/integration tests by @Snuffleupagus in #21632toBeUndefined() matcher consistently in the unit tests by @Snuffleupagus in #21633toThrowError() matcher consistently in the unit tests by @Snuffleupagus in #21636toBeFalse() matcher consistently in the unit/integration tests by @Snuffleupagus in #21634toBeTrue() matcher consistently in the unit/font/integration tests by @Snuffleupagus in #21635normalizeBlendMode helper by @Snuffleupagus in #21642defaultOptions, in the web/app_options.js file, to a Map by @Snuffleupagus in #21640Catalog.prototype.jsActions getter and AnnotationElement.prototype._getElementsByName a tiny bit by @Snuffleupagus in #21653MissingDataExceptions by @Snuffleupagus in #21652This release contains improvements for annotation rendering, annotation editing, font conversion, image conversion, merging files, SMask rendering and
This release contains improvements for annotation rendering, annotation editing, font conversion, image conversion, merging files, SMask rendering and the viewer.
pdfjs.config by @timvandermeij in #21360MathClamp helper function in the src/display/canvas.js file by @Snuffleupagus in #21367StringStream constructor to accept an optional dictionary argument by @Snuffleupagus in #21366BaseStream.prototype.clone implementations by @Snuffleupagus in #21371enableSelectionRendering: false by @wooorm in #21378OptionalContentConfig by @Snuffleupagus in #21349/AuthEvent, on-demand decryption by @wooorm in #21351#externalHide field from the AnnotationLayerBuilder class by @Snuffleupagus in #21380AppOptions unit-tests to also cover the EVENT_DISPATCH option-kind by @Snuffleupagus in #21385getBytes method in the Stream/ChunkedStream classes by @Snuffleupagus in #21384ChunkedStreamManager by @Snuffleupagus in #21387Autolinker class by @Snuffleupagus in #21392getDocument by @Snuffleupagus in #21391getDocument by @Snuffleupagus in #21390PDFCursorTools functionality by @Snuffleupagus in #21393DrawLayerBuilder.prototype.cancel method a tiny bit by @Snuffleupagus in #21395PDFPageView.prototype.#injectLinkAnnotations method by @Snuffleupagus in #21396codecov/codecov-action to version 7.0.0 by @timvandermeij in #21398external/ folder is modified by @Snuffleupagus in #21400::selection in Firefox by @wooorm in #21408Map.prototype.getOrInsertComputed polyfill from the scripting implementation (PR 21399 follow-up) by @Snuffleupagus in #21405getAttachments to return data in a Map by @Snuffleupagus in #21418PDFViewer helper method for setting #printingAllowed and dispatching the event by @Snuffleupagus in #21409convertBlackAndWhiteToRGBA helper with grayscale images in putBinaryImageData by @Snuffleupagus in #21427convertToViewportRectangle method in the PageViewport class by @Snuffleupagus in #21426isDict helper function in a few more places by @Snuffleupagus in #21431Map.prototype.getOrInsertComputed() more in the code-base by @Snuffleupagus in #21439isSourcePDF handling in the JpegImage class by @Snuffleupagus in #21441finishWorkerTask by @Snuffleupagus in #21443convertRGBToRGBA helper with RGB images in putBinaryImageData by @Snuffleupagus in #21440must check that the comment sidebar is resizable comment integration test by @timvandermeij in #21448npm install by @timvandermeij in #21453eslint-plugin-unicorn to version 66.0.0 by @timvandermeij in #21454HighlightOutline.prototype.classNamesForOutlining getter by @Snuffleupagus in #21456src/core/editor/pdf_editor.js by @Snuffleupagus in #21459src/display/canvas.js file by @Snuffleupagus in #21467CanvasGraphics.prototype.showText by @Snuffleupagus in #21473Enter key, in the passwordPrompt input by @Snuffleupagus in #21482AnnotationEditorUIManager.prototype.isSelected method by @Snuffleupagus in #21470isDict helper in the Catalog.prototype.metadata getter by @Snuffleupagus in #21481MissingDataExceptions in the Annotation.prototype.#setOptionalContent method (PR 21313 follow-up) by @Snuffleupagus in #21479StructElementNode.prototype.mathML getter by @Snuffleupagus in #21480AnnotationEditorUIManager and IdManager test-only reset methods (PR 19809 follow-up) by @Snuffleupagus in #21489readCmapTable function (PR 19321 follow-up) by @Snuffleupagus in #21491sink handling in getTextContent for Highlight annotations (PR 20019 follow-up) by @Snuffleupagus in #21486catalog instance in the annotationGlobals data by @Snuffleupagus in #214886.1 by @Snuffleupagus in #21499String.prototype.substring() usage by @Snuffleupagus in #21497issue17906 to test "forms" rendering by @Snuffleupagus in #21502init method in the StructTreeRoot constructor by @Snuffleupagus in #21505src/ and web/ folders by @Snuffleupagus in #21508PDF.js 6.0 is a major release that contains a number of API changes, features and bugfixes.
PDF.js 6.0 is a major release that contains a number of API changes, features and bugfixes.
The complete list of changes in this release is shown below. If you're upgrading to PDF.js 6.0 we recommend checking the changes prefixed with [api-minor] and [api-major] since those might require updates to your code.
pdfjs.config by @timvandermeij in #21177Catalog.prototype.getPageIndex to an asynchronous method by @Snuffleupagus in #21181readBlock method in the DecodeStream class by @Snuffleupagus in #21190unittestcli coverage collection to ci.yml by @timvandermeij in #21191PDFFindController.prototype.#extractText method by @Snuffleupagus in #21197nextChunk handling in the DecryptStream class by @Snuffleupagus in #21198Intersector constructor by @Snuffleupagus in #21200pdfBug: true flag in the image caching unit test by @timvandermeij in #212036.0 by @Snuffleupagus in #21209JpxStream by @Snuffleupagus in #21211CompilerOutput.prototype.finalData getter, and a few other font improvements (PR 21053 follow-up) by @Snuffleupagus in #21214TypedArray.prototype.set() in the compileFDSelect method by @Snuffleupagus in #21215raw field from the CFFCharset class by @Snuffleupagus in #21216TrueTypeTableBuilder and CompilerOutput with a single class by @Snuffleupagus in #21220WasmImage class, that JBig2CCITTFaxImage and JpxImage inherit from by @Snuffleupagus in #21225getPdfFilenameFromUrl helper by @Snuffleupagus in #21222external/ folder in the coverage report for gulp unittestcli by @Snuffleupagus in #21226WasmImage implementation a little bit (PR 21225 follow-up) by @Snuffleupagus in #21229PDFDataRangeTransport streaming unit-tests faster by @Snuffleupagus in #21238Uint8Array.fromHex in test/unit/crypto_spec.js by @Snuffleupagus in #21246getDocument without a parameter object, and remove the PDFDocumentProxy.prototype.destroy method by @Snuffleupagus in #21245filename unconditionally, when passing binary data to PDFViewerApplication.open by @Snuffleupagus in #21249getModificationDate helper function into src/core/core_utils.js by @Snuffleupagus in #21258deepCompare helper function to handle Refs and Names correctly by @Snuffleupagus in #21257a11yAlert by @Snuffleupagus in #21263pdf.worker.mjs file by @Snuffleupagus in #21269stringToPDFString helper function to the worker-thread by @Snuffleupagus in #21279Util.domMatrixToTransform method by @Snuffleupagus in #21281getXfaPageViewport helper into the XfaLayer class by @Snuffleupagus in #21283SVG_NS definition into src/shared/util.js by @Snuffleupagus in #21284ColorConverters unit-tests by @Snuffleupagus in #21286Outline._normalizePagePoint method by @Snuffleupagus in #21287PDFDocumentProperties dialog by @Snuffleupagus in #21289contentLength available in the PDFDocumentProperties dialog by @Snuffleupagus in #21291must check that an existing highlight is ignored on hovering integration test on Windows by @timvandermeij in #21288Util.scaleMinMax helper into src/display/canvas_dependency_tracker.js by @Snuffleupagus in #21294PDFDocumentProperties dialog by @Snuffleupagus in #21295EventBus methods in the integration-tests by @Snuffleupagus in #21305getPdfFilenameFromUrl helper function by @Snuffleupagus in #21311PdfTextExtractor class by @Snuffleupagus in #21304fontFile lookup a tiny bit by @Snuffleupagus in #21322XfaLayerBuilder.prototype.render method by @Snuffleupagus in #21317Uint8Array.fromBase64 in the test/integration/highlight_editor_spec.mjs file by @Snuffleupagus in #21323src/display/canvas_dependency_tracker.js by @Snuffleupagus in #21324XRefWrapper implementation, in the src/core/editor/pdf_editor.js file by @Snuffleupagus in #21319external/builder/ folder is changed by @Snuffleupagus in Note truncated.
This release contains improvements for accessibility, annotations, the annotation editor, font conversion, image conversion, performance, shading patt
This release contains improvements for accessibility, annotations, the annotation editor, font conversion, image conversion, performance, shading pattern rendering, SMask rendering and the viewer.
pdfjs.config by @timvandermeij in #21004node-readable-to-web-readable-stream polyfill by @Snuffleupagus in #21007MathClamp helper function more by @Snuffleupagus in #21026OffscreenCanvas unconditionally in the web/pdf_thumbnail_view.js file by @Snuffleupagus in #21021collectAnnotationsByType improvements by @Snuffleupagus in #21034MathClamp helper function to its own file by @Snuffleupagus in #21027Object.prototype.hasOwnProperty usage with Object.hasOwn by @Snuffleupagus in #21029PDFDataRangeTransport to use a single (internal) listener by @Snuffleupagus in #21028compilePostScriptToIR function (PR 21023 follow-up) by @Snuffleupagus in #21037PostScriptCompiler and PostScriptEvaluator, since it's now dead code (PR 21023 follow-up) by @Snuffleupagus in #21005calculateMD5 helper, from test/downloadutils.mjs, in test/add_test.mjs by @Snuffleupagus in #21038borderColor by @Snuffleupagus in #21047src/core/postscript/ code a tiny bit by @Snuffleupagus in #21048stringToBytes helper in the PDFEditor.prototype.writePDF method by @Snuffleupagus in #21051ViewsManager class by @Snuffleupagus in #21055TypedArray.prototype.fill() in the src/core/ascii_85_stream.js file by @Snuffleupagus in #21050CFFCompiler.prototype.compileIndex (PR 21053 follow-up) by @Snuffleupagus in #21062ChunkedStream.prototype.getBytes without a length by @Snuffleupagus in #21070OpenTypeFileBuilder class to use a DataView when writing data by @Snuffleupagus in #21076CFFParser class to use DataViews when reading data by @Snuffleupagus in #21079JpegImage class, and related code, to use DataViews when reading data by @Snuffleupagus in #21086Jbig2Image class, and related code, to use DataViews when reading data by @Snuffleupagus in #21087int32 helper, and replace it with DataView usage, in src/core/fonts.js by @Snuffleupagus in #21088stopEvent helper function in the AnnotationEditorLayer class by @Snuffleupagus in #21092FontRendererFactory class, and related code, to use DataViews when reading data by @Snuffleupagus in #21077readUint32 usage from the isTrueTypeFile function by @Snuffleupagus in #21078Math.sumPrecise polyfill by @Snuffleupagus in #20958createCmapTable function by @Snuffleupagus in #21103createNameTable function by @Snuffleupagus in #21112privateData in a Map, rather than an Object by @Snuffleupagus in #21116gets text content, with correct properties (issue 8276) unit test by @timvandermeij in #21123MIN_INT_32 constant (PR 21139 follow-up) by @Snuffleupagus in #21153gulp unittestcli by @Snuffleupagus in #21147radix ESLint rule by @Snuffleupagus in #21157AnnotationStorage.prototype.modifiedIds getter by @Snuffleupagus in #21158hexNumbers Array into Util, to enable using it in the viewer by @Snuffleupagus in #21160PDFDocumentProxy.prototype.getPageIndex method by Note truncated.
Your coding agent can read these notes before it upgrades. Set up the MCP server →