Fact-checked by Grok 2 weeks ago

OpenPDF

OpenPDF is an open-source library designed for creating, editing, rendering, and encrypting PDF documents, as well as generating PDFs from content. It serves as the LGPL/MPL-licensed successor to , forked from iText version 4.2.0 in October 2016 following iText's transition to an AGPL and proprietary licensing model starting with version 5.0. Maintained by the LibrePDF organization, OpenPDF supports key PDF functionalities including text handling, font embedding, graphics, tables, digital signatures, and compliance with PDF standards. Additional modules enable HTML-to-PDF conversion via a fork of and PDF rendering to images through a fork of PDFRenderer. Dual-licensed under the GNU Lesser General Public License version 2.1 (LGPL 2.1) and the version 2.0 (MPL ), with certain modules restricted to LGPL 2.1 only, OpenPDF remains actively developed, with its latest major release, version 3.0.0, issued in August 2025. A Kotlin-specific module further extends its utility for modern JVM-based applications.

Introduction

Description

OpenPDF is an open-source Java library designed for the creation, editing, rendering, encrypting, and manipulation of PDF documents. It provides developers with tools to programmatically handle PDF files in Java applications, enabling functionalities such as document assembly, text extraction, image embedding, and form processing without relying on commercial software. The library is particularly valued for its compliance with PDF standards, ensuring compatibility with various PDF viewers and processors. A notable feature of OpenPDF is its support for generating PDFs directly from HTML content, which facilitates the conversion of web-based layouts into printable documents while preserving styling and structure. This capability is achieved through integrated rendering mechanisms that interpret and CSS to produce high-fidelity PDF outputs. As a Java-based , OpenPDF offers cross-platform , running seamlessly on Windows, macOS, , and other Java Virtual Machine (JVM)-supported environments. Key use cases for OpenPDF include programmatic PDF generation in enterprise applications, such as report creation in web services or batch in backend systems, and tasks like merging, splitting, or redacting PDFs in automated workflows. It serves as an alternative for developers seeking free, open-source solutions to avoid PDF tools. OpenPDF originated as a of the library to maintain an open-source licensing model. It operates under a dual licensing scheme of the GNU Lesser General Public License (LGPL) and (MPL). Since its initial in late 2017, OpenPDF has seen steady adoption, evidenced by its active maintenance with over 80 releases as of August 2025. The project is hosted on , where it continues to attract contributions and usage in Java-based projects.

Licensing

OpenPDF is distributed under a dual licensing model, allowing users to choose between the GNU Lesser General Public License version 2.1 or later (LGPL-2.1+) and the version 2.0 (MPL-2.0). This approach provides flexibility for integration into various software projects while ensuring the library remains . The LGPL-2.1+ permits linking OpenPDF into without requiring the disclosure of the entire application's , provided that the library itself can be replaced or modified by users through dynamic linking or object code distribution. In contrast, the MPL-2.0 enforces file-level , meaning that modifications to OpenPDF's source files must be shared under the same if redistributed, but it does not impose requirements on the surrounding . This dual structure was selected to accommodate both and commercial development needs, maintaining with applications that were common prior to the library's origins. The choice of these licenses stems from OpenPDF's history as a fork of iText version 4.2.0, which was also dual-licensed under LGPL and MPL, following iText's transition to the more restrictive Affero General Public License (AGPL) starting with version 5.0. This shift aimed to preserve openness for developers who preferred the less stringent terms of the original iText licensing. For redistribution, users must comply with the chosen license: under LGPL-2.1+, modified versions require providing object code or source for the library changes, while MPL-2.0 mandates sharing source for altered files. Modifications and contributions to the project must be dual-licensed under both LGPL-2.1+ and MPL-2.0, and no code under GPL or AGPL is accepted to avoid compatibility issues. Commercial use is explicitly allowed under either license, subject to these terms, enabling integration into closed-source products without full source release obligations beyond the library itself. The project's repository includes dedicated license files: LICENSE.LGPL for the LGPL-2.1+ terms and LICENSE.MPL for the MPL-2.0 terms, along with compliance guidance in the emphasizing the dual nature and restrictions on incompatible contributions. Note that subprojects like OpenPDF-html and OpenPDF-renderer are licensed solely under LGPL-2.1, without the MPL option.

History

Origins in

The first public release of , version 0.30, occurred on February 14, 2000, following development begun in 1999 by Bruno Lowagie at the University of Ghent. Paulo Soares joined as a key contributor shortly thereafter, co-authoring much of the core functionality and helping establish as a foundational open-source tool for PDF generation. The library originated from Lowagie's work on a PDF during his time at the University of Ghent, evolving into a versatile for programmatic PDF handling. Originally released under the (MPL) and (LGPL), iText allowed broad use in both open-source and projects without stringent requirements up through version 2.x. In December 2009, with the launch of iText 5.0.0, the licensing shifted to the GNU Affero License (AGPL) for the open-source edition, alongside the introduction of s to support the growing business around the library. This change aimed to encourage adoption through paid licenses while maintaining an open-source option, but the AGPL's requirements—such as mandatory disclosure for modifications used in network-accessible applications—raised significant concerns among developers. Many in the community viewed the AGPL as overly restrictive for closed-source , potentially forcing companies to either open their entire codebase or purchase licenses, leading to widespread dissatisfaction and calls for alternatives that preserved the original permissive terms. The fork that became OpenPDF was based on iText's SVN tag 4.2.0, an internal development snapshot equivalent to version 2.1.7 with minor fixes, rather than a formal release; this tag number stemmed from synchronization efforts with the C# port (iTextSharp), creating a versioning anomaly as no official Java 4.x release existed. This pre-AGPL base provided OpenPDF with foundational features including APIs for PDF document creation, content addition (such as text, images, and tables), editing existing PDFs, form handling, and encryption support, all under the retained LGPL and MPL dual license. These capabilities formed the core of iText's appeal as a lightweight yet powerful library for server-side PDF operations without relying on external tools.

Establishment of OpenPDF

OpenPDF was established in as a community-driven of version 4 (specifically the SVN tag 4.2.0), initiated to maintain the library's original LGPL and MPL dual licensing after iText's developers transitioned to a more restrictive AGPL and commercial model in version 5. The was initiated in October 2016, with the LibrePDF organization formed shortly thereafter to oversee collaborative maintenance. This setup allowed for collaborative maintenance outside the original iText structure, ensuring the library remained freely available for both open-source and proprietary applications without additional obligations. This fork addressed widespread concerns in the developer community about licensing constraints on commercial use. From its , OpenPDF's primary goals focused on preserving full compatibility with iText 4's and functionality, while incorporating targeted bug fixes and minor enhancements to improve reliability—such as security patches—without introducing breaking changes or deviating from the open-source licensing terms. These objectives were driven by input from the iText user base seeking a stable, licensed to support legacy integrations in environments. The first official release, version 1.0.0, was issued in early 2017, marking the project's debut as a viable independent alternative and quickly followed by iterative updates like 1.0.1 in January 2017 to refine core operations.

Release Milestones

The OpenPDF project began releasing versions in the 1.x series in 2017, initially forked from 4.2.0 to maintain LGPL/MPL licensing while focusing on stability and compatibility with legacy environments. Throughout 2017–2022, this series emphasized bug fixes, security patches, and incremental enhancements derived from the iText base, with over 30 minor releases addressing issues in PDF generation, font handling, and document manipulation. For instance, version 1.3.30 was released on September 19, 2022. Version 2.0.0, released on February 18, 2024, marked a significant refactor to support modern versions, requiring 17 or later and removing 108 deprecated methods and fields to streamline the and reduce maintenance overhead. This update minimized breaking changes for existing users while enabling use of contemporary Java features, such as improved syntax and libraries. In version 2.1.0, released on June 14, 2025, OpenPDF raised the minimum requirement to 21, introducing a modular structure with new modules like openpdf-kotlin for idiomatic Kotlin DSL-based PDF building and openpdf-html for enhanced HTML-to-PDF conversion via a fork supporting and CSS improvements. The release also deprecated the legacy HtmlParser, urging migration to the new html module, and updated core dependencies for better performance. Version 3.0.0, released on August 17, 2025, completed the project's modernization by renaming the primary package from com.lowagie to org.openpdf, fully removing legacy imports and requiring source code updates for compatibility. Key additions included native support for PDF 2.0 (ISO 32000-2:2020) with string-based version handling, enhanced , and tagged PDF features; new batch utilities like HtmlToPdfBatchUtils and PdfBatchUtils leveraging 21 virtual threads for efficient merging, splitting, watermarking, and ; and a PDF rendering module for image output. OpenPDF maintains a release cadence of approximately 2–4 major versions per year, supplemented by frequent minor updates for fixes and enhancements, with all artifacts hosted on GitHub and distributed via Maven Central.

Features

Basic PDF Operations

OpenPDF provides core functionality for generating PDF documents from scratch through its high-level Document class, which serves as the entry point for assembling content, paired with the PdfWriter class to handle output to files or streams. The process begins by creating a new Document instance, typically configured with page size and margins, such as Document document = new Document(PageSize.A4);. A PdfWriter is then obtained via PdfWriter.getInstance(document, new FileOutputStream("output.pdf")), linking the document to the output destination. After opening the document with document.open(), elements like text via Paragraph objects, images via Image instances scaled and positioned with setAbsolutePosition(), and basic layouts using Table or PdfPTable for tabular structures can be added sequentially. For instance, adding a simple paragraph involves document.add(new Paragraph("Hello World")); while incorporating an image requires loading it with Image.getInstance("image.jpg") and adding it similarly. The document is closed with document.close() to finalize and write the PDF. This approach ensures structured content assembly compliant with PDF syntax. For reading and parsing existing PDF files, OpenPDF utilizes the PdfReader class to load and inspect documents without modification. Instantiation occurs as PdfReader reader = new PdfReader("input.pdf");, allowing access to the number of pages via reader.getNumberOfPages(). Content extraction includes retrieving text from specific pages using tools like PdfTextExtractor.getTextFromPage(reader, pageNumber), which parses streams for readable strings while respecting encoding. Metadata, such as title or author from the document info dictionary, is obtained through reader.getInfo().get("Title"), and individual pages can be examined via reader.getPageN(pageNumber) to access PdfDictionary objects containing page resources, annotations, and rotation. This enables basic parsing for validation or data retrieval, supporting encrypted files if the correct password is provided during instantiation. Simple encryption in OpenPDF is achieved during PDF creation or stamping via the PdfWriter's setEncryption method, which applies password-based protection using standard algorithms. For user and owner passwords, the method is invoked as writer.setEncryption(userPassword.getBytes(), ownerPassword.getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_128);, where STANDARD_ENCRYPTION_128 employs the algorithm with 128-bit keys for compatibility with older viewers. For stronger security, ENCRYPTION_AES_128 specifies AES-128 , allowing permissions like printing or copying while restricting others. This protects the entire document, including streams and metadata, and requires the user password for opening or owner for alterations. Encrypted files remain readable by PdfReader if unlocked with the appropriate password. Page management in OpenPDF supports fundamental operations like adding, duplicating, and rotating pages during creation or basic copying. New pages are inserted in a via document.newPage(), automatically advancing the layout. Duplication leverages PdfCopy for merging, where PdfReader loads the source, and copy.addPage(copy.getImportedPage(reader, sourcePage)) replicates pages into a new document while preserving content and resources. Rotation is handled by querying or setting ; for example, reader.getPageRotation(pageNumber) retrieves degrees (0, 90, 180, 270), and during output, writer.addPageRotation(newPage, 90) applies rotation without altering content coordinates. These operations maintain page integrity for simple workflows like appending or reorienting. OpenPDF ensures compliance with the PDF 2.0 standard (ISO 32000-2), building on its iText 4 base with subsequent enhancements. Font handling includes the 14 standard PDF fonts (e.g., Helvetica, Times-Roman) via FontFactory.getFont(FontFactory.HELVETICA), as well as embedding TrueType and Type 1 fonts for custom typography, ensuring portability without subsetting issues. Graphics primitives are rendered using PdfContentByte for lines, shapes, and fills—such as cb.moveTo(x1, y1).lineTo(x2, y2).stroke()—along with image placement and color spaces (RGB, CMYK, grayscale) for vector and raster elements, all aligned with PDF 2.0's graphics model for consistent rendering across viewers.

Advanced PDF Handling

OpenPDF provides robust capabilities for modifying existing PDF documents, enabling developers to perform complex edits without recreating files from scratch. The PdfStamper class serves as the primary tool for these operations, allowing incremental updates to an input PDF read via PdfReader. For instance, PdfStamper facilitates adding or removing pages by manipulating the page dictionary and content streams, while updating text involves accessing and altering text objects through the stamper's content byte streams. Merging multiple documents is handled efficiently with the PdfCopy class, which copies pages and resources from source PDFs into a new or existing document, preserving structure and avoiding duplication of shared elements like fonts or images. These features stem from OpenPDF's inheritance of iText's low-level PDF manipulation , ensuring compatibility with PDF 2.0 standards (ISO 32000-2) in core implementations. Form handling in OpenPDF supports the creation and manipulation of AcroForms, Adobe's standard for interactive PDF forms. Developers can generate form fields using PdfFormField and integrate them into documents via PdfAcroForm, which manages the overall form dictionary. Filling forms programmatically is achieved by retrieving AcroFields from a PdfReader instance and setting field values, accommodating text, checkboxes, and radio buttons. Digital signatures are supported through PdfSignatureAppearance, enabling the embedding of certificate-based signatures compliant with PDF specifications, including visible signature widgets and certification options. This functionality allows for secure, legally binding document workflows, with OpenPDF handling the cryptographic hashing and embedding of signature data streams. Limitations include partial support for advanced XFA forms, focusing instead on static AcroForms for broader compatibility. Advanced graphics and layout operations leverage the PdfContentByte class, which provides direct access to PDF content streams for drawing vector elements. This includes methods for rendering lines, curves, rectangles, and paths using operators like moveTo, lineTo, and stroke, enabling the creation of scalable vector graphics without rasterization. Annotations, such as highlights, notes, or , are added via PdfAnnotation subclasses, positioned over pages and linked to actions or appearances defined in PdfContentByte. These tools support complex layouts, including , clipping paths, and color spaces, making OpenPDF suitable for generating diagrams, charts, or overlaid in professional documents. Vector operations ensure high fidelity across zoom levels, distinguishing them from image-based rendering. To optimize file sizes, OpenPDF incorporates compression techniques targeting both structural elements and media content. Object streams, introduced in PDF 1.5, are utilized via PdfWriter's setFullCompression method, which groups indirect objects into compressed streams to reduce overhead in the file's cross-reference table. Image optimization involves downsampling through the Image class's scaling methods combined with compression levels (e.g., JPEG or Flate), allowing reduction of resolution for embedded raster graphics while maintaining visual quality. These features can significantly decrease file sizes—for example, enabling up to 50% reduction in documents with redundant objects or high-resolution images—without loss of essential data, though aggressive settings may impact rendering performance. Error handling in OpenPDF emphasizes robustness when processing malformed or non-standard PDFs, primarily through exception-based mechanisms in the PdfReader class. Attempts to parse invalid structures, such as corrupted tables or invalid object references, trigger BadPdfFormatException, providing diagnostic details for recovery or . The library offers partial tolerance for minor malformations, like missing whitespace or extended encodings, by employing lenient modes where configurable. As of version 3.0.0, OpenPDF provides full support for PDF 2.0 (ISO 32000-2), including 256-bit encryption and advanced digital signatures. Developers must validate input PDFs using tools like PdfReader's isOpenedWithFullPermissions to mitigate risks from restricted or damaged files.

Recent Enhancements

OpenPDF has seen significant updates in its 2.x and 3.x series, introducing modern features tailored for contemporary development environments. Version 2.1.0, released on June 14, 2024, marked the integration of Java 21 as a minimum requirement and added the openpdf-html module, a fork of library, enabling HTML-to-PDF conversion with support for CSS 2.1 rendering and layout for generating dynamic content from web-based sources. This module facilitates the conversion of and limited elements into PDFs, prioritizing well-formed inputs for reliable output. Complementing this, the openpdf-renderer module was introduced in version 2.2.0 (June 14, 2024), providing capabilities to render PDF pages to images, such as or formats, suitable for previewing and integration into applications without full PDF viewing dependencies. These rendering features leverage Java 2D for efficient output, allowing developers to embed PDF previews in desktop or web interfaces. To enhance modularity and reduce deployment footprint, OpenPDF adopted a multi-JAR starting in version 2.4.0 on August 8, 2024, separating the core functionality into openpdf-core-legacy (for ) and openpdf-core-modern, alongside dedicated JARs for conversion and rendering modules. This design permits selective inclusion of components, minimizing overhead for applications that do not require all features. Version 3.0.0, released on August 17, 2025, further optimized for 21 and later by incorporating virtual threads in utilities like HtmlToPdfBatchUtils and PdfBatchUtils, improving throughput for multi-threaded HTML-to-PDF conversions and common PDF operations such as merging, splitting, watermarking, and encryption. These enhancements capitalize on Java's for better performance and in high-volume processing scenarios. Version 3.0.0 also includes PDF 2.0-specific improvements such as enhanced and better support for tagged PDFs for . Regarding backward compatibility, the shift to the new org.openpdf package namespace in version 3.0.0 represents a breaking change from the legacy com.lowagie packages, necessitating updates to import statements and calls. Comprehensive guides are available, detailing the transition from 1.x and 2.x versions, including handling and dual-package support in intermediate releases like 2.4.0 to ease adoption.

Technical Aspects

Implementation Details

OpenPDF is implemented entirely in , a platform-independent programming language that enables broad compatibility across different systems. The library requires JDK 8 or higher for earlier versions (such as 1.3.x), but starting with release 2.1.0 and subsequent versions including 3.0.0, it targets 21 or later to leverage modern language features like virtual threads for improved concurrency. As a pure library, OpenPDF is cross-platform and runs on any operating system supported by the (JVM), including Windows, , and macOS, without the need for native code or platform-specific adaptations. The maintains minimal external dependencies to ensure lightweight integration; core functionality relies on built-in Java classes, while optional libraries such as BouncyCastle (for cryptographic operations) and Apache FOP (for advanced formatting) can be included for specialized features like enhanced font handling. OpenPDF employs as its primary build system, facilitating straightforward compilation, testing, and packaging through standard Maven commands and configurations defined in its pom.xml file. JAR artifacts are published to Maven Central, allowing developers to incorporate the library via simple dependency declarations in their own or projects. Key performance considerations involve memory management, particularly for large documents where PDF generation and can lead to high usage due to in-memory buffering of and resources; developers are advised to monitor JVM settings and use techniques like streaming output to mitigate out-of-memory errors. Additionally, while the library supports multi-threaded environments through 21's virtual threads, API calls require careful handling to ensure , as concurrent access to shared document instances may necessitate to prevent race conditions.

API Design

OpenPDF's API is structured to provide both high-level abstraction and low-level control for PDF manipulation in Java applications. At the core, the Document class serves as the primary high-level interface for constructing PDFs, allowing developers to add elements such as text, images, and tables through simple method calls like add(). In contrast, the PdfDocument class operates at a lower level, managing the internal PDF object structure, page layout, and rendering details in coordination with a PdfWriter instance. Input and output operations are handled by dedicated classes: PdfWriter for generating new PDFs or appending to streams, PdfReader for parsing and extracting content from existing files in partial or full modes, and PdfStamper for incremental modifications like adding annotations or forms to an input PDF without full rewriting. The package organization reflects OpenPDF's evolution from its iText origins. Versions prior to 3.0 utilized the com.lowagie.text and com.lowagie.text.pdf packages for core functionality and PDF-specific utilities, respectively. With the release of OpenPDF 3.0.0, all classes migrated to the org.openpdf.text and org.openpdf.text.pdf namespaces to establish a distinct identity, requiring code updates for compatibility while preserving the semantics. This restructuring supports modular builds, with separate artifacts like openpdf-core for essential features. An event-driven model enhances customization, particularly for page-level interventions, via the PdfPageEvent interface. Implementations can override methods such as onStartPage(), onEndPage(), and onChapter() to inject headers, footers, watermarks, or dynamic content during document generation, with events forwarded through PdfWriter.setPageEvent() for multi-event handling. This approach decouples content addition from rendering logic, enabling reusable event handlers. Exception handling is tailored to PDF-specific errors, promoting robust error recovery. The DocumentException signals general issues in document assembly or element processing, such as invalid content types or layout failures. The BadPdfFormatException, a subclass of PdfException, is thrown when encounters corrupted or non-compliant PDF structures, like invalid tables, allowing applications to distinguish format errors from operational ones. Extensibility is facilitated through key interfaces that permit integration of specialized components. The FontProvider interface enables custom font resolution by implementing methods like isRegistered() and getFont() to load or other formats from external paths or resources, supporting multilingual or branded without altering core classes. For output customization, developers can extend PdfWriter or implement listener interfaces like DocListener to intercept and modify stream writing, accommodating alternative devices such as encrypted outputs or networked streams. These mechanisms ensure the remains adaptable for enterprise use cases.

Development and Community

Project Organization

OpenPDF is hosted on GitHub under the LibrePDF organization, with the primary repository established in 2016 as a fork of iText 4.2.0 to ensure continued open-source development of PDF functionalities. The project employs a standard Git version control workflow, utilizing dedicated branches for feature implementation, release candidates, and bug fixes to facilitate collaborative development and maintain code stability. Issue tracking occurs via GitHub Issues, where bugs, feature requests, and enhancements are reported and discussed, while GitHub Discussions provide a dedicated space for community questions and answers. Core maintenance is handled by a small team of developers, with top contributors as of 2025 including rtfarte (leading the initial and ongoing stewardship), kulatamicuda, daviddurand, and ymasory, based on commit history and repository ancestry. A related project, OpenPDF5, exists as a separate AGPL-licensed fork under the LibrePDF organization, specifically designed for compatibility with 5 APIs and maintained independently to support legacy integrations.

Contributing and Support

OpenPDF welcomes contributions from the community to enhance its functionality and maintain its compatibility as a PDF library. Contributors are required to use a GitHub account displaying their real name for identity verification, and all submitted code must be original, licensed under both the LGPL and MPL, and from GPL or AGPL contaminants. To prepare a contribution, developers should the repository, implement changes in a feature branch, and ensure the code builds successfully using mvn clean install. Before submitting a pull request (), contributors must add appropriate tests, resolve any Checkstyle violations by running mvn checkstyle:check, and address issues flagged by (CI) builds post-submission. The project follows a modified Java Style Guide, specifying 4-space indentation, 8-space continuation indents, and a maximum line length of 120 characters, while preserving the style of existing files; IDEs are recommended to use Checkstyle or SonarLint plugins configured via provided files for compliance. For bug reporting, users should create issues on the project's repository, providing detailed reproductions including code snippets, environment details (e.g., Java version and OpenPDF release), and steps to replicate the problem to facilitate by maintainers. While no custom issue templates are enforced, the process relies on GitHub's labeling and assignment features, with maintainers prioritizing issues based on impact, such as compatibility breaks or security vulnerabilities reported via the dedicated . Documentation resources include comprehensive Javadoc generated for each release, accessible online for API reference, covering classes like Document and PdfWriter with usage examples. The GitHub wiki provides module-specific guides, such as for the core library, HTML-to-PDF conversion, and rendering, along with a dedicated tutorial section outlining integration steps like setting up a basic PDF document. For user support, Maven integration is straightforward by adding the dependency <groupId>com.github.librepdf</groupId><artifactId>openpdf</artifactId><version>3.0.0</version> to the pom.xml file (as of November 2025), enabling seamless inclusion in Java projects via Maven Central. Migration from iText is supported through a wiki guide detailing package renames (e.g., from com.lowagie.text to org.openpdf in version 3.0.0), deprecated method removals, and alternatives like using java.util.Base64 for encoding or adding the TwelveMonkeys library for TIFF handling. Community engagement occurs primarily through GitHub Discussions for general queries and feature requests, the Gitter chat room for real-time assistance, and the [openpdf] tag on for programming-related questions, where users share solutions for tasks like adding bookmarks or handling overflow text. Although no active mailing lists are maintained, these channels ensure responsive support for both developers and users integrating OpenPDF into applications.

References

  1. [1]
    OpenPDF is an open-source Java library for creating ... - GitHub
    OpenPDF is an open-source Java library for creating, editing, rendering, and encrypting PDF documents, as well as generating PDFs from HTML. It is licensed ...Releases 83 · Discussions · Issues · Pull requests 8
  2. [2]
    OpenPDF is an open source Java library for PDF files - GitHub Pages
    OpenPDF is a free Java library for creating and editing PDF files with a LGPL and MPL open source license. OpenPDF is based on a fork of iText.Missing: What | Show results with:What
  3. [3]
    HTML to PDF Using OpenPDF | Baeldung
    Jan 8, 2024 · OpenPDF is a free Java library for creating and editing PDF files under the LGPL and MPL licenses. It's a fork of the iText program.
  4. [4]
    Download a PDF with OpenPDF - Micronaut Guides
    OpenPDF is a Java library for creating and editing PDF files with a LGPL and MPL open source license. OpenPDF is the LGPL/MPL open source successor of iText, ...
  5. [5]
    OpenPDF download | SourceForge.net
    Aug 17, 2025 · OpenPDF is a Java library for creating and editing PDF files with a LGPL and MPL open source license. OpenPDF is the LGPL/MPL open source ...
  6. [6]
    Releases · LibrePDF/OpenPDF - GitHub
    Aug 17, 2025 · OpenPDF is an open-source Java library for creating, editing, rendering, and encrypting PDF documents, as well as generating PDFs from HTML.Missing: stars | Show results with:stars
  7. [7]
    Our history | iText PDF
    Our license changes from MPL/LGPL to AGPL. We establish iText Software Corp (ISC). To our eternal sadness, nobody saw the heart in the iText logo and so we ...
  8. [8]
    iText PDF - iText 5
    Rating 9/10 (5) iText 5 is EOL and as of version 5.5.13 has transitioned to maintenance mode, meaning it only receives security related releases and fixes to allow users who ...
  9. [9]
    Open Source AGPLv3 license | iText PDF
    By following the rules of the Affero General Public License (AGPLv3), you may use the iText PDF library and our open-source add-ons at no cost.
  10. [10]
    Does anyone know of a fork of iText? [closed] - Stack Overflow
    Jul 1, 2010 · Now that iText has gone AGPL, I'm assuming someone is going to take the old (2.1.7 or 4.2.0) code and fork it to keep an LGPL version going.iTextPDF to OpenPDF Integration - javaWhat is the difference between lowagie and iText?More results from stackoverflow.comMissing: history | Show results with:history
  11. [11]
    rtfarte/OpenPDF: No longer actively maintained. Please ... - GitHub
    Mar 28, 2019 · No longer actively maintained. Please send all pull requests to: https://github.com/librepdf/openpdf - rtfarte/OpenPDF.
  12. [12]
    openpdf » 1.0.1 - com.github.librepdf - Maven Repository
    Jan 29, 2017 · OpenPDF Core Modern » 1.0.1 ; formatgithubdocumentpdfoffice · Jan 29, 2017 · pom (1 KB) jar (1.8 MB) View All · CentralMulesoft · #3718 in ...
  13. [13]
    openpdf » 1.3.30 - com.github.librepdf - Maven Repository
    OpenPDF Core Modern » 1.3.30 ; Sep 19, 2022 · pom (3 KB) jar (2.0 MB) View All · CentralJitpackMulesoftSoftmotions · #3847 in MvnRepository (See Top ...
  14. [14]
    What's New - Jaspersoft
    Replaced iText library with LibrePDF OpenPDF 1.3.30 in JasperReports Library ... There are performance improvements and upgraded connectors and dependencies.
  15. [15]
    Release OpenPDF 2.0.0 · LibrePDF/OpenPDF
    ### Summary of Key Changes in OpenPDF 2.0.0
  16. [16]
    openpdf » 2.0.0 - com.github.librepdf - Maven Repository
    Feb 18, 2024 · OpenPDF Core Modern » 2.0.0 ; Feb 18, 2024 · pom (3 KB) jar (3.4 MB) View All · CentralJitpackMulesoft · #3715 in MvnRepository (See Top Artifacts)Missing: changes | Show results with:changes
  17. [17]
    Release 2.1.0 · LibrePDF/OpenPDF
    ### Summary of OpenPDF 2.1.0 Key Changes
  18. [18]
    openpdf » 2.1.0 - com.github.librepdf - Maven Repository
    OpenPDF Core Modern » 2.1.0 ; Jun 14, 2025 · pom (2 KB) jar (2.1 MB) View All · Central · #3718 in MvnRepository (See Top Artifacts) #4 in PDF ...
  19. [19]
    Release OpenPDF 3.0.0 · LibrePDF/OpenPDF
    ### Summary of OpenPDF 3.0.0 Key Changes and Features
  20. [20]
  21. [21]
    OpenPDF Core Modern - com.github.librepdf - Maven Repository
    Open and Free PDF library. It uses the new package name `org.openpdf`. License, LGPL 2.1MPL 2.0. Categories, PDF Libraries. Tags, formatgithubdocumentpdf ...Missing: stars | Show results with:stars
  22. [22]
    Create Simple PDF in Java · GitHub
    document.add(new Paragraph("OpenPDF Demo Document", titleFont));. document.add(new Paragraph("This is a sample PDF created with OpenPDF.", bodyFont));.Missing: example | Show results with:example
  23. [23]
    PdfReader (openpdf 1.2.7 API) - GitHub Pages
    Reads and parses a PDF document. PdfReader(byte[] pdfIn, byte[] ownerPassword). Reads and parses a PDF document.
  24. [24]
    Does any one have an idea about how to set password to existing ...
    Jul 12, 2020 · To add password to a new PDF, we use PdfWriter.setEncryption() method. PdfStamper API is used when we need to protect existing PDF.
  25. [25]
    PdfCopy (openpdf 1.2.6 API) - javadoc.io
    openpdf openpdf-html openrtf. 1.2.6. 3.0.0 2.4.0 2.2.4 2.2.3 2.2.2 2.2.1 2.2.0 ... Use this methods to add a PdfAnnotation or a PdfFormField to the document. void ...Missing: duplicate | Show results with:duplicate
  26. [26]
  27. [27]
  28. [28]
    None
    ### Summary of pom.xml from OpenPDF
  29. [29]
    Openpdf-renderer: Improve PDF rendering and display #1366 - GitHub
    Jun 19, 2025 · Benefit: Better performance and memory usage for multi-page documents. Enable page thumbnails and navigation sidebar. Display clickable ...
  30. [30]
    PdfDocument (openpdf 1.2.7 API) - GitHub Pages
    PdfDocument is the class that is used by PdfWriter to translate a Document into a PDF with different pages. A PdfDocument always listens to a Document and adds ...Missing: 3.0 documentation
  31. [31]
    PdfStamper (openpdf 1.3.6 API) - javadoc.io
    Class PdfStamper. Applies extra content to the pages of a PDF document. This extra content can be all the objects allowed in PdfContentByte including pages ...Missing: design | Show results with:design
  32. [32]
    index all classes all packages - openpdf 3.0.0 javadoc
    Adds a JavaScript action at the document level. addJavaScript(String) - Method in class org.openpdf.text.pdf.PdfWriter. Use this method to adds a JavaScript ...
  33. [33]
    PdfPageEvent (openpdf 1.2.7 API) - GitHub Pages
    Allows a class to catch several document events. Note: do not use Document.add() inside a page event. Author: Paulo Soares (psoares@consiste.Missing: driven | Show results with:driven
  34. [34]
    Uses of Interface com.lowagie.text.pdf.PdfPageEvent - GitHub Pages
    If you want to add more than one page event to a PdfWriter, you have to construct a PdfPageEventForwarder, add the different events to this object and add ...Missing: driven | Show results with:driven
  35. [35]
    FontProvider (openpdf 1.3.4-SNAPSHOT API)
    Parameters: fontName - the name of the font that has to be checked. Returns: true if the font is found. getFont. Font getFont(@Nullable String fontName, ...Missing: custom | Show results with:custom
  36. [36]
    Contributors to LibrePDF/OpenPDF
    **Summary of Contributors to LibrePDF/OpenPDF**
  37. [37]
    OpenPDF5 is a fork of iText 5 - maintained as open source ... - GitHub
    Apr 25, 2019 · This fork has been created to ensure that iText 5 will stay maintained, since the iText company has decided to deprecate iText 5. This ensures ...
  38. [38]
    None
    ### Summary of CONTRIBUTING.md for OpenPDF
  39. [39]
  40. [40]
    LibrePDF/OpenPDF
    **Summary of Bug Reporting and Triage Process (OpenPDF Issues):**
  41. [41]
  42. [42]
    openpdf 3.0.0 javadoc (com.github.librepdf)
    https://javadoc.io/doc/com.github.librepdf/openpdf. Current version 3.0.0. https://javadoc.io/doc/com.github.librepdf/openpdf/3.0.0. package-list path (used ...
  43. [43]
    Home
    ### Summary of OpenPDF Wiki Content
  44. [44]
    Migrating from iText 2 and 4
    ### Summary of Migrating from iText 2 and 4 to OpenPDF
  45. [45]
  46. [46]
    Newest 'openpdf' Questions - Stack Overflow
    I have looked at the openPDF gitHUb link https://github.com/LibrePDF/OpenPDF ... How many stars is possible to obtain in your savefile? Can a state ...