---
license: Licensed to the Apache Software Foundation (ASF) under one
         or more contributor license agreements.  See the NOTICE file
         distributed with this work for additional information
         regarding copyright ownership.  The ASF licenses this file
         to you under the Apache License, Version 2.0 (the
         "License"); you may not use this file except in compliance
         with the License.  You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0

         Unless required by applicable law or agreed to in writing,
         software distributed under the License is distributed on an
         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
         KIND, either express or implied.  See the License for the
         specific language governing permissions and limitations
         under the License.

layout:  default
title:   Download
---

<h1>{{title}}</h1>

<h2>Latest Releases</h2>

<p>The Apache PDFBox community provides feature and bugfix releases.</p>

<ul>
    <li>Feature release for PDFBox 2.0.x &mdash; <a href="https://www.apache.org/dist/pdfbox/2.0.21/RELEASE-NOTES.txt">2.0.21</a></li>
    <li>Bugfix release for PDFBox 1.8.x &mdash; <a href="https://www.apache.org/dist/pdfbox/1.8.16/RELEASE-NOTES.txt">1.8.16</a></li>
    <li>Feature release of JBIG2 ImageIO plugin 3.0.x &mdash; <a href="https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.3/RELEASE-NOTES.txt">3.0.3</a></li>
    <li><a href="#oldreleases">Previous releases</a></li>
</ul>

<p>See also the <a href="#exportcontrol">export control</a> information related to the encryption features included in Apache PDFBox.</p>

<h2>Current releases</h2>

<h3>Binary Distribution</h3>

<table class="table">
    <thead>
        <tr>
            <th>Version</th>
            <th>Description</th>
            <th>Download Link</th>
            <th>PGP Signature</th>
            <th>SHA512 Checksum</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="11"><strong>PDFBox<br>2.0.21</strong><br><small>feature</small></td>
            <td colspan="4"><strong>Command line tools</strong></td>
        </tr>
        <tr>
            <td>PDFBox standalone</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/pdfbox-app-2.0.21.jar&action=download">pdfbox-app-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-app-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-app-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>Debugger standalone</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/debugger-app-2.0.21.jar&action=download">debugger-app-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/debugger-app-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/debugger-app-2.0.21.jar.sha512">SHA512</a></td>        
        </tr>
        <tr>
            <td>Preflight standalone</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/preflight-app-2.0.21.jar&action=download">preflight-app-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/preflight-app-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/preflight-app-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td colspan="4"><strong>Libraries of each subproject</strong></td>
        </tr>
        <tr>
            <td>pdfbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/pdfbox-2.0.21.jar&action=download">pdfbox-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>fontbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/fontbox-2.0.21.jar&action=download">fontbox-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/fontbox-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/fontbox-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>preflight</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/preflight-2.0.21.jar&action=download">preflight-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/preflight-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/preflight-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>xmpbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/xmpbox-2.0.21.jar&action=download">xmpbox-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/xmpbox-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/xmpbox-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>pdfbox-tools</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/pdfbox-tools-2.0.21.jar&action=download">pdfbox-tools-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-tools-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-tools-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>pdfbox-debugger</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/pdfbox-debugger-2.0.21.jar&action=download">pdfbox-debugger-2.0.21.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-debugger-2.0.21.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-debugger-2.0.21.jar.sha512">SHA512</a></td>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td rowspan="9"><strong>PDFBox<br>1.8.16</strong><br><small>bugfix</small></td>
            <td colspan="4"><strong>Command line tools</strong></td>
        </tr>
        <tr>
            <td>PDFBox standalone</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/pdfbox-app-1.8.16.jar&action=download">pdfbox-app-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-app-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-app-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>Preflight standalone</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/preflight-app-1.8.16.jar&action=download">preflight-app-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/preflight-app-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/preflight-app-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td colspan="4"><strong>Libraries of each subproject</strong></td>
        </tr>
        <tr>
            <td>pdfbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/pdfbox-1.8.16.jar&action=download">pdfbox-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>fontbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/fontbox-1.8.16.jar&action=download">fontbox-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/fontbox-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/fontbox-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>preflight</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/preflight-1.8.16.jar&action=download">preflight-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/preflight-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/preflight-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>jempbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/jempbox-1.8.16.jar&action=download">jempbox-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/jempbox-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/jempbox-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td>xmpbox</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/xmpbox-1.8.16.jar&action=download">xmpbox-1.8.16.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/xmpbox-1.8.16.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/xmpbox-1.8.16.jar.sha512">SHA512</a></td>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td rowspan="1"><strong>JBIG2<br>3.0.3</strong><br><small>feature</small></td>
            <td>JBIG2 ImageIO plugin</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3.jar&action=download">jbig2-imageio-3.0.3.jar</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3.jar.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3.jar.sha512">SHA512</a></td>
        </tr>
    </tbody>
</table>

<h3>Source Distribution</h3>

<table class="table">
    <thead>
        <tr>
            <th>Version</th>
            <th>Description</th>
            <th>Download Link</th>
            <th>PGP Signature</th>
            <th>SHA512 Checksum</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>PDFBox<br>2.0.21</strong><br><small>feature</small></td>
            <td>Source ZIP file incl. examples</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/2.0.21/pdfbox-2.0.21-src.zip&action=download">pdfbox-2.0.21-src.zip</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-2.0.21-src.zip.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/2.0.21/pdfbox-2.0.21-src.zip.sha512">SHA512</a></td>
        </tr>
        <tr>
            <td><strong>PDFBox<br>1.8.16</strong><br><small>bugfix</small></td>
            <td>Source ZIP file incl. examples</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/1.8.16/pdfbox-1.8.16-src.zip&action=download">pdfbox-1.8.16-src.zip</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-1.8.16-src.zip.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/1.8.16/pdfbox-1.8.16-src.zip.sha512">SHA512</a></td>  
        </tr>
        <tr>
            <td><strong>JBIG2<br>3.0.3</strong><br><small>feature</small></td>
            <td>Source ZIP file</td>
            <td><a href="https://www.apache.org/dyn/closer.lua?filename=pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3-src.zip&action=download">jbig2-imageio-3.0.3-src.zip</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3-src.zip.asc">ASC</a></td>
            <td><a href="https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.3/jbig2-imageio-3.0.3-src.zip.sha512">SHA512</a></td>
        </tr>
    </tbody>
</table>


<h3>Verify</h3>

<p>
    It is essential that you verify the integrity of the downloaded files using the PGP signatures or
    SHA512 checksums. Please read <a href="https://httpd.apache.org/dev/verification.html">Verifying Apache HTTP Server Releases</a>
    for more information on why you should verify our releases.
</p>

<p>
    The PGP signatures can be verified using PGP or GPG. First download the
    <a href="https://www.apache.org/dist/pdfbox/KEYS">KEYS</a> file as well as the .asc signature files for the
    relevant release packages. Make sure you get these
    files from the <a href="https://www.apache.org/dist/pdfbox">main distribution directory</a>, rather than
    from a mirror. Then verify the signatures using
</p>

<pre>
% pgpk -a KEYS
% pgpv pdfbox-X.Y.Z-src.zip.asc
</pre>

or

<pre>
% pgp -ka KEYS
% pgp pdfbox-X.Y.Z-src.zip.asc
</pre>

or

<pre>
% gpg --import KEYS
% gpg --verify pdfbox-X.Y.Z-src.zip.asc pdfbox-X.Y.Z-src.zip
</pre>

<a name="oldreleases"></a>
<h2>Previous releases</h2>

<p>
    Previous Apache releases (starting with version `0.8.0-incubating`) are available in the <a href="https://archive.apache.org/dist/pdfbox/">release archive</a>.
    Older releases (up to version `0.7.3`) published from SourceForge are still available on
    <a href="https://sourceforge.net/projects/pdfbox/files/PDFBox/">SourceForge Files</a>.
</p>

<a name="exportcontrol"></a>
<h2>Export control information</h2>

<p>This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export
to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information.
</p>

<p>The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1,
which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations,
Section 740.13) for both object code and source code.
</p>

<p>The following provides more details on the included cryptographic software:
</p>

<ul>
    <li>Apache PDFBox uses the Java Cryptography Architecture (JCA) and the Bouncy Castle libraries for handling encryption in PDF documents.
        </li>
</ul>
