Release Notes -- Apache JBIG2 ImageIO -- Version 3.0.4

Introduction
------------

The Java ImageIO plugin for JBIG2 enables access to images encoded using the JBIG2 
image compression standard. This component is part of the Apache PDFBox® project.

This is an incremental bugfix release based on the earlier 3.0.3 release.

For more details on all fixes and improvements included in this release, please refer
to the following issues on the PDFBox issue tracker at 
https://issues.apache.org/jira/browse/PDFBOX.

Bug

[PDFBOX-4671] - NoClassDefFoundError: Could not initialize class org.apache.pdfbox.jbig2.JBIG2ImageReader
[PDFBOX-5242] - LoggerBridge loading under the wrong class loader

Improvement

[PDFBOX-5220] - Optimizations for Bitmaps

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.md file for instructions on how to build this release.

The source archive is accompanied by SHA512 checksums and a PGP signature
that you can use to verify the authenticity of your download.
The public key used for the PGP signature can be found at
https://svn.apache.org/repos/asf/pdfbox/KEYS.

About Apache PDFBox
-------------------

Apache PDFBox is an open source Java library for working with PDF documents.
This project allows creation of new PDF documents, manipulation of existing
documents and the ability to extract content from documents. Apache PDFBox
also includes several command line utilities. Apache PDFBox is published
under the Apache License, Version 2.0.

For more information, visit https://pdfbox.apache.org/

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 100 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 2,500+ contributors.

For more information, visit https://www.apache.org/
