Releases: LibrePDF/OpenPDF
OpenPDF 3.0.0
OpenPDF 3.0.0
-
OpenPDF 3.0.0 uses the new package name org.openpdf. The old com.lowagie is now removed from OpenPDF 3.0.
This means that source code using OpenPDF must be migrated to use import statements using org.openpdf.* package. -
PDF 2.0 support in OpenPDF – This is a breaking API change:
All version-related methods now useString
instead ofchar
as method parameters. See PdfVersion.java and PdfWriter.java.
The default version is now PDF 2.0.About PDF 2.0:
PDF 2.0 is the latest official version of the Portable Document Format, standardized as ISO 32000-2:2020.
It was first published by the International Organization for Standardization (ISO) in July 2017, with a revised edition in December 2020.
PDF 2.0 introduces improved color management, tagged PDF enhancements, advanced encryption options, and clarifies many ambiguous parts of the PDF 1.x specifications. -
Added HtmlToPdfBatchUtils and PdfBatchUtils, new batch utilities built on Java 21 virtual threads.
These APIs improve throughput for HTML→PDF rendering and common PDF tasks such as merge, split, watermark, and encrypt.
The migration to new package name org.openpdf started in OpenPDF 2.4.0, while OpenPDF 3.0 is the first version of OpenPDF which fully uses the new package name.
What's Changed
- Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 by @dependabot[bot] in #1404
- Remove openpdf-core-legacy module by @andreasrosdal in #1406
- Rename openpdf-core by @andreasrosdal in #1407
- Initial PDF 2.0 support by @andreasrosdal in #1408
- PDF 2.0 tests by @andreasrosdal in #1409
- PDF 2.0 tests by @andreasrosdal in #1410
- Bump org.jetbrains.kotlin:kotlin-stdlib from 2.2.0 to 2.2.10 by @dependabot[bot] in #1412
- Bump org.jetbrains.kotlin:kotlin-maven-plugin from 2.2.0 to 2.2.10 by @dependabot[bot] in #1413
- Delete RtfElementInterface by @andreasrosdal in #1414
Full Changelog: 2.4.0...3.0.0
OpenPDF 2.4.0
OpenPDF 2.4.0 Release Notes
Highlights
- Java package name change: All classes have been moved from
com.lowagie
toorg.openpdf
in the openpdf-core-modern module. - Module split: The
openpdf
submodule has been split (duplicated) into:openpdf-core-legacy
– all classes here are deprecated.openpdf-core-modern
– actively maintained and used by all submodules.
See 2.4.0 migration guide for details.
What's Changed
Major Changes
-
Module restructuring:
- Split
openpdf
intoopenpdf-core-legacy
andopenpdf-core-modern
.
#1393 – @andreasrosdal - Deprecated all classes in
openpdf-core-legacy
.
#1395 – @andreasrosdal - Updated all submodules to use
openpdf-core-modern
.
#1396 – @andreasrosdal
- Split
-
New features:
- Added flag in
ColumnText
to control whether words are chopped, or to throw an exception instead of arbitrarily chopping long words.
#1379 – @csimoes1 - Added TU and ALT fields to signature object.
#1386 – @MaSchmidt1999
- Added flag in
-
Performance improvements:
- Register fonts only once in a static block instead of on every constructor call.
#1373 – @giangianoulas
- Register fonts only once in a static block instead of on every constructor call.
-
Code cleanup:
- Removed commented-out code and unnecessary
System.out.println
calls.
#1364 – @andreasrosdal
- Removed commented-out code and unnecessary
Dependency Updates
org.sonatype.central:central-publishing-maven-plugin
0.7.0 → 0.8.0com.puppycrawl.tools:checkstyle
10.25.0 → 11.0.0 (multiple incremental updates)org.jetbrains.kotlin:kotlin-stdlib
2.1.21 → 2.2.0org.jetbrains.kotlin:kotlin-maven-plugin
2.1.21 → 2.2.0junit.version
5.13.1 → 5.13.4com.google.errorprone:error_prone_annotations
2.38.0 → 2.41.0org.dom4j:dom4j
2.1.4 → 2.2.0org.apache.maven.plugins:maven-gpg-plugin
3.2.7 → 3.2.8org.verapdf:validation-model
1.28.1 → 1.28.2commons-io:commons-io
2.19.0 → 2.20.0org.htmlunit:neko-htmlunit
4.13.0 → 4.14.0
New Contributors
- @giangianoulas – Font registration optimization #1373
- @csimoes1 –
ColumnText
long word handling #1379 - @MaSchmidt1999 – TU and ALT signature fields #1386
We will soon begin on the OpenPDF 3.0 version which uses only the org.openpdf package name.
Full Changelog: 2.2.4 → 2.4.0
OpenPDF 2.2.4
What's Changed
- Bump org.sonatype.central:central-publishing-maven-plugin from 0.7.0 to 0.8.0 by @dependabot in #1363
- Remove commented out code and some system.out.println by @andreasrosdal in #1364
- Bump com.puppycrawl.tools:checkstyle from 10.25.0 to 10.25.1 by @dependabot in #1371
- Register font only once in static block instead on every constructor … by @giangianoulas in #1373
- Bump org.jetbrains.kotlin:kotlin-stdlib from 2.1.21 to 2.2.0 by @dependabot in #1375
- Bump org.jetbrains.kotlin:kotlin-maven-plugin from 2.1.21 to 2.2.0 by @dependabot in #1374
- Bump junit.version from 5.13.1 to 5.13.2 by @dependabot in #1376
- Bump com.google.errorprone:error_prone_annotations from 2.38.0 to 2.39.0 by @dependabot in #1378
- Bump com.puppycrawl.tools:checkstyle from 10.25.1 to 10.26.0 by @dependabot in #1377
- Add flag to ColumnText to control if words are chopped or Throw exception instead of arbitrarily chopping long words#1297 by @csimoes1 in #1379
- Bump com.puppycrawl.tools:checkstyle from 10.26.0 to 10.26.1 by @dependabot in #1380
New Contributors
- @giangianoulas made their first contribution in #1373
- @csimoes1 made their first contribution in #1379
Full Changelog: 2.2.3...2.2.4
OpenPDF 2.2.3
OpenPDF 2.2.2
What's Changed
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.5.0 to 3.11.2 by @dependabot in #1358
- Rename openpdf-html config file til openpdf.conf and some minor fixes by @andreasrosdal in #1360
- Remove GenShinGothic-Normal.ttf in order to reduce overall full zip file size from 21MB to 15MB.
Full Changelog: 2.2.1...2.2.2
2.2.1
News in OpenPDF 2.2.1
- Openpdf-renderer: Modernization and fix of multiple code analysis warnings.
2.2.0
OpenPDF 2.2.0 Released!
We’re excited to announce the release of OpenPDF 2.2.0, a new milestone in our ongoing mission to build a modern, fully open-source PDF library for Java.
What's New
openpdf-renderer
Module Added (#1357)
We’ve added a brand new module: openpdf-renderer
.
This module integrates the openpdf-renderer engine into OpenPDF, enabling:
- High-quality PDF rendering to images
- Fast page previews and thumbnails
- Support for converting PDF pages to
BufferedImage
for use in Java applications
It’s perfect for developers who need visual previews of PDFs in desktop or server-side applications.
Maven Coordinates:
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>2.2.0</version>
</dependency>
2.1.0
OpenPDF 2.1.0 - Modernization and New Features
We are excited to announce the release of OpenPDF 2.1.0, which marks a major step forward for the project.
-
Java 21 required: OpenPDF 2.1.0 now targets Java 21 LTS and benefits from its modern features and performance improvements. Java 21 was released in 2023.
-
New Kotlin module openpdf-kotlin Build PDFs more easily using idiomatic Kotlin APIs and a DSL-inspired builder interface.
-
Added openpdf-html module: A maintained fork of Flying Saucer for converting HTML to PDF, now part of the OpenPDF project. The goal is to improve HTML5 and modern CSS support.
-
Deprecated HtmlParser We encourage migrating to openpdf-html for improved HTML rendering.
-
Updated dependencies.
Full Changelog: 2.0.5...2.1.0
OpenPDF 2.0.5
What's Changed
- Bump org.pitest:pitest-junit5-plugin from 1.2.2 to 1.2.3 by @dependabot in #1321
- Remove hamcrest dependency by @Emkas in #1322
- Mockito cleanup and upgrade by @Emkas in #1324
- Bump org.jfree:jfreechart from 1.5.5 to 1.5.6 by @dependabot in #1326
- Bump com.puppycrawl.tools:checkstyle from 10.23.1 to 10.24.0 by @dependabot in #1327
- Security documentation by @andreasrosdal in #1328
- Build on Java 24 by @andreasrosdal in #1329
- Fix for reading very small PDF files by @andreasrosdal in #1334
New Contributors
- @samruddhithakor made their first contribution in #1241
Full Changelog: 2.0.4...2.0.5
2.0.4
What's Changed
🛠️ Major Fixes and Features
- Support for > 2GB files by @andreasrosdal in #1319
- Fix: HtmlParser cannot recognize base64-encoded images by @maayanb180 in #1271
- PDF/A1A & PDF/A1B invalid due to missing language attribute in title metadata by @hemat0gen in #1279
- Allow extra FF bytes preceding JPEG markers by @jeffrey-easyesi in #1247
- Fix: LZWDecoder fails when stream doesn't start with Clear Table (256) by @scottmore in #1299
- Fix HTML export issue with image and text div rendering by @maayanb180 in #1275
- Fix margin setting on open document by @DarkMike-ru in #1283
- Set original type on images for OpenRTF support by @olivierDelierre in #1285
✅ Improvements & Minor Fixes
- Added check/error in PdfPTable.addCell by @StevenStreasick in #1195
- Handle null resources gracefully by @gtoison in #1278
- Clarify the licensing policy by @ForNeVeR in #1206
- Fix broken links for licenses by @sinansonmez in #1277
- Update LayoutProcessor.java (see #1159) by @vk-github18 in #1211
📦 Dependency Updates
- Bump
maven-surefire-plugin.version
from 3.3.0 → 3.3.1 #1200 - Bump
org.hamcrest:hamcrest
from 2.2 → 3.0 #1201 - Bump
org.assertj:assertj-core
from 3.26.0 → 3.26.3 #1202 - Bump
junit.version
from 5.10.2 → 5.10.3 #1204 - Bump
maven-javadoc-plugin
from 3.7.0 → 3.11.1 #1231 - Bump
junit.version
from 5.10.3 → 5.11.3 #1236 - Bump
commons-io:commons-io
from 2.16.1 → 2.18.0 #1237 - Bump
icu4j
from 75.1 → 76.1 #1238 - Bump
fop
from 2.9 → 2.10 #1239 - Bump
checkstyle
from 10.17.0 → 10.20.1 #1240 - Bump
maven-jxr-plugin
from 3.4.0 → 3.6.0 #1242 - Bump
maven-site-plugin
from 3.12.1 → 3.21.0 #1243 - Bump
maven-gpg-plugin
from 3.2.4 → 3.2.7 #1244 - Bump
maven-surefire-plugin.version
from 3.3.1 → 3.5.2 #1245 - Bump
bouncycastle.version
from 1.78.1 → 1.79 #1246 - Bump
commons-io:commons-io
from 2.18.0 → 2.19.0 #1305 - Bump
fop
from 2.10 → 2.11 #1303 - Bump
maven-bundle-plugin
from 5.1.9 → 6.0.0 #1302 - Bump
maven-compiler-plugin
from 3.13.0 → 3.14.0 #1301 - Bump
maven-javadoc-plugin
from 3.11.1 → 3.11.2 #1304 - Bump
maven-surefire-plugin.version
from 3.5.2 → 3.5.3 #1309 - Bump
maven-clean-plugin
from 3.4.0 → 3.4.1 #1312 - Bump
validation-model
from 1.26.1 → 1.28.1 #1311 - Bump
icu4j
from 76.1 → 77.1 #1313 - Bump
maven-checkstyle-plugin
from 3.4.0 → 3.6.0 #1310 - Bump
checkstyle
from 10.20.1 → 10.23.1 #1314 - Bump
bouncycastle.version
from 1.79 → 1.80 #1316 - Bump
pitest-junit5-plugin
from 1.2.1 → 1.2.2 #1315 - Bump
junit.version
from 5.11.3 → 5.12.2 #1318 - Bump
assertj-core
from 3.26.3 → 3.27.3 #1317 - Bump
jacoco-maven-plugin
from 0.8.12 → 0.8.13 #1320
🧑💻 New Contributors
- @StevenStreasick in #1195
- @ForNeVeR in #1206
- @sinansonmez in #1277
- @gtoison in #1278
- @maayanb180 in #1271
- @hemat0gen in #1279
- @olivierDelierre in #1285
- @scottmore in #1299
- @DarkMike-ru in #1283
Full Changelog: 2.0.3...2.0.4