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.
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.
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.
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.
Official sources
- [1]LibrePDF/OpenPDF — GitHub repository metadata(2026-09-15)
- [2]LibrePDF/OpenPDF — README(2026-09-15)
- [3]LibrePDF/OpenPDF — pom.xml(2026-09-15)
- [4]LibrePDF/OpenPDF — Security Policy(2026-09-15)
- [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
Get the source
git clone --depth 1 https://github.com/LibrePDF/OpenPDF.git - 2
Enter the repository
cd OpenPDF - 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
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-generation
- java
- itext
- openpdf
- kotlin
- flyingsaucer
- Stars
- 4,366
- Forks
- 713
- Watchers
- 72
- Open issues
- 151
- Primary language
- Java
- License
- MPL-2.0 OR LGPL-2.1+
- Repository last updated
- Aug 5, 2026
Explore next
- React250,454 Stars
A JavaScript library for building web and native user interfaces from declarative components.
JavaScript - Visual Studio Code (Code - OSS)192,545 Stars
The MIT-licensed Code - OSS repository that forms the open foundation of Visual Studio Code.
TypeScript - Flutter178,947 Stars
Google's cross-platform UI SDK for delivering mobile, web, and desktop applications from one Dart codebase.
Dart - Bootstrap174,803 Stars
A responsive, mobile-first web framework built from CSS and JavaScript grids, utilities, and components.
MDX - LangChain146,360 Stars
A Python framework that connects models, tools, retrieval systems, and other components for LLM applications and agents.
Python
Report incorrect information
Tell us if any listing information is incorrect or outdated.