All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- pdiiif-lib: Parse lowercase hex strings when parsing PDFs, fixes coverpage integration from react-pdf sourced PDFs. Many thanks to @fstoe from UB Leipzig for discovering and fixing the bug.
- Updated minimum Node.js version to 20 due to stabilization of built-in
fetch
- pdiiif-lib: Fix regression in OCR handling, detect OCR in
rendering
field
- pdiiif-lib: Made coverpage metadata extraction more robust
- pdiiif-lib: Fix broken ALTO XML parsing
- pdiiif-lib: A DOM implementation is no longer required, wich makes it possible to use pdiiif from a Worker or Service Worker
- pdiiif-lib: Fixed broken CommonJS build
- pdiiif-lib:
convertManifest
now returns aConversionReport
with details about the PDF generation process, including which images and OCR files failed to download - pdiiif-lib: Be more obnoxious when retrying failed resource downloads, namely retry on 4xx errors as well as 5xx
- pdiiif-lib: Added a
onNotification(notification: ProgressNotification)
API through which errors/warnings that don't abort the PDF generation can be displayed while the PDF is generating - pdiiif-api: Added a
notification
event type to inform users about errors/ warnings that don't abort the PDF generation - pdiiif-web: Show notifications for errors/warnings during PDF generation
- pdiiif-lib: Fix compatibility with Node.js versions >=20
- pdiiif-lib: Fix broken PDFs when images fail to download
- pdiiif-web: Fix premature download termination in Firefox >=102 when the PDF generation process is very slow
- pdiiif-api: Fix bug when running in Node 20
- pdiiif-lib: Fix version specifier
- docker: Updated image to Node 20 and Debian bookworm, rely on Puppeteer-provided Chrome version instead of downloading it from the Debian repository
- pdiiif-lib: fetch polyfill for older Node.js versions works now
- pdiiif-api: Exceptions are now properly logged
- pdiiif-lib:
estimatePdfSize
now returns a{ size: number; corsEnabled: boolean }
object instead of simply anumber
. This allows you to check if the Image API endpoints that were sampled to determine the size have CORS available - pdiiif-web: The
KeepAliveStreamSaver
class no longer relies on thenavigator.locks
API, increasing compatibility with older browsers
- pdiiif-lib: Content-Negotation for IIIF Presentation API 3 manifests is now implemented
- pdiiif-web: Detection for unavailability of CORS is now working properly and falling back to server-side PDF generation
- pdiiif-lib: Choice parsing could fail under some circumstances, this has been fixed
- pdiiif-api: PDF filenames would sometimes fail to generate properly, resulting in
a
.pdf
filename, this has been fixed
- pdiiif-lib: Fix coverpage parsing on browsers that don't support
TypedArray#findLastIndex
by implementing a polyfill for it (#24, thanks @andybuki for reporting)
No changes for this release, limited to pdiiif-server
npm package due
to a messed up npm deploymennt.
- New section in README on how to implement custom cover pages by using a self-hosted or custom server instance.
- pdiiif-lib: Fix broken license logo URLs for CC-NC-ND and CC0
- pdiiif-lib: Add missing Public Domain Mark 1.0 license logo
- pdiiif-lib: Fix infinite loop with certain manifests when estimating PDF size (#23, thanks @ch-sander for reporting)
- pdiiif-api: Remove pdiiif-web dependency, vendor in bundles and HTML to fix shipping via npm
- pdiiif-api: Add support for more handlebars helpers in templates by adding `handlebars-helpers
- Dependency updates for all packages
- Removed mkcert integration
- pdiiif-lib: Fix broken offset sorting when transplanting cover page PDFs that would lead to broken PDFs in some instances
- pdiiif-lib: Selecting a custom range of canvases now also works when the Manifest has ranges defined, this would result in an error previously ([#20][issue-20])
- pdiiif-lib: Prevent inclusion of duplicate Table of Contents tree when converting
from IIIFv2 manifests with a
top
range ([#21][issue-21]) - pdiiif-lib: PDFs from manifests that reference OCR that fails to fetch during converting now no longer result in a broken state ([#17][issue-17])
- Removed
lodash
dependency in favor of EcmaScript builtins and to reduce bundle size - pdiiif-web: SSL via
mkcert
is now fully optional for running the development server