OSS Tanbou

OpenPDF — a Java PDF library for generation, editing, HTML conversion, rendering, and encryption

OSS health 82
About these scores

Discovery score is an unbounded weighted, log-compressed index of stars, watchers, forks, and contributors. Growth momentum is its change over the observed period; OSS health is a 0–100 score from available repository recency, Community Health, and release data.

Stars
4,366
Primary language
Java
License
MPL-2.0 OR LGPL-2.1+
Repository last updated
Aug 5, 2026

Overview

OpenPDF is an open-source Java library for creating, editing, encrypting, extracting from, and rendering PDF documents, with additional modules for HTML/CSS-to-PDF conversion and Kotlin. Descended from the iText 4 line, it has expanded into PDF 2.0 support, Brotli-compressed streams, rendering, and HTML conversion. The current stable 3.0.5 line requires Java 21 or later, and OpenPDF 3.0 moved its Java packages to `org.openpdf`.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Create new PDFs and manipulate existing documents through a Java API

The official README lists PDF creation, manipulation of existing documents, text and fonts, images and graphics, tables, encryption, page layout, and text extraction among the core capabilities. That makes OpenPDF useful for both document generation and server-side processing of PDFs already supplied by users or upstream systems.

Sources: [2]

Keep HTML-to-PDF, rendering, and Kotlin support in separate modules

openpdf-html converts HTML/CSS to PDF from a Flying Saucer-derived implementation, openpdf-renderer renders PDF pages to images or Java UI surfaces, and openpdf-kotlin provides Kotlin-oriented PDF creation. The parent POM separates core, HTML, renderer, Kotlin, fonts, and tooling into Maven modules so applications can adopt only the pieces they need.

Sources: [2][3]

Track modern PDF features including PDF 2.0, Brotli streams, and signature-related integrations

The README advertises PDF 2.0 support and transparent reading and writing of Brotli-compressed PDF streams. The 3.0.5 release also includes Brotli support, encryption and signature modernization, and renderer integration work. Bouncy Castle is listed as a recommended dependency for PDF signing, giving the project scope beyond simple document layout.

Sources: [2][5]

A fit for JVM systems needing reports, invoices, HTML templates, previews, or PDF post-processing

OpenPDF fits Java and Kotlin backends that need to generate PDFs directly, services that turn HTML templates into reports or invoices, and applications that merge, edit, encrypt, inspect, or preview existing PDFs. Teams maintaining older iText 2/4-era code can also evaluate the documented migration path rather than replacing the entire PDF layer.

OpenPDF 3.0 means Java 21+ and a package move to `org.openpdf`, so legacy upgrades are not only a version change

The README maps OpenPDF 2.1.x and later to Java 21+, 2.0.x to Java 17+, 1.4.x to Java 11+, and 1.3.x to Java 8+. OpenPDF 3.0 also changes the Java package name from com.lowagie to org.openpdf. Long-lived JVM applications should plan for JDK upgrades, import changes, module differences, and regression testing of code inherited from iText-compatible APIs.

The latest stable release is 3.0.5 from May 22, 2026, while the current parent POM on master identifies 3.0.6-SNAPSHOT. Production builds should pin a formal Maven Central or release version instead of treating the repository snapshot as a stable dependency.

Sources: [2][3][5]

Treat PDF and HTML input as untrusted application input; OpenPDF does not provide a sandbox

The Security Policy explicitly says OpenPDF is not a sandboxed or hardened environment. File paths, image sources, font names, and HTML are processed without application-level validation, so attacker-controlled input can create risks including local-file access, path traversal, SSRF, unsafe base64 data, and memory exhaustion from large or malformed PDFs.

Services that render HTML or external images should apply HTML sanitization, URL and path allowlists, font restrictions, upload-size limits, and isolated execution where appropriate. Licensing also differs by module: the core uses the MPL-2.0 OR LGPL-2.1+ dual-license model, while the README states that openpdf-html and openpdf-renderer are LGPL-2.1 only.

Sources: [4][2][3]

Official sources

  1. [1]LibrePDF/OpenPDF — GitHub repository metadata(2026-09-15)
  2. [2]LibrePDF/OpenPDF — README(2026-09-15)
  3. [3]LibrePDF/OpenPDF — pom.xml(2026-09-15)
  4. [4]LibrePDF/OpenPDF — Security Policy(2026-09-15)
  5. [5]LibrePDF/OpenPDF — OpenPDF 3.0.5 release(2026-09-15)
Supplemental curator note

We selected OpenPDF as more than a report generator: its project spans HTML-to-PDF, rendering, Kotlin support, and PDF 2.0 alongside core PDF manipulation. Version 3.x requires Java 21+ and the org.openpdf package move, while untrusted HTML or PDF input requires application-level controls for SSRF, file access, and resource exhaustion.

Try it in 3 steps

  1. 1

    Get the source

    git clone --depth 1 https://github.com/LibrePDF/OpenPDF.git
  2. 2

    Enter the repository

    cd OpenPDF
  3. 3

    Check the official steps

    Continue with the commands in the README Installation, Quick Start, or Getting Started section.

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
Check the official README

Growth

Growth trends · Last 30 days

4,366 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
0
Open PRs
38

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • pdf
  • pdf-generation
  • java
  • itext
  • openpdf
  • kotlin
  • flyingsaucer
Stars
4,366
Forks
713
Watchers
72
Open issues
151
Primary language
Java
Repository last updated
Aug 5, 2026
Report incorrect information

Tell us if any listing information is incorrect or outdated.