USING IRONPDF FOR JAVA How to Write PDF File in Java Darrius Serrant Updated:July 28, 2025 Download IronPDF Maven Download JAR Download Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Gemini Ask Gemini about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article This article will explore IronPDF for creating PDF documents programmatically. IronPDF for Java PDF Library The Java PDF Library by IronPDF allows developers to create, edit, and manipulate PDF documents in their Java applications. Java developers who need to create PDF files from their applications' data will find this library to be an excellent choice because it offers a diverse set of functionalities. IronPDF comes with features such as adding new HTML content, embedding HTML headers and footers, stamping and watermarking documents, creating password-protected PDF files, applying digital signatures to PDF files, enhancing documents with backgrounds and foregrounds, creating a full PDF file from XML documents, adding and editing annotations, and using outlines and bookmarks for better navigation. Let's take a closer look. Add New HTML Content With IronPDF, developers can easily add new HTML content to their PDF documents. This is a great feature for developers who want to dynamically generate their PDF form documents with rich HTML content. The library supports many HTML elements, including images, links, and tables, among others. HTML content can also be styled using CSS, making it easy to create professional-looking PDFs. import com.ironsoftware.ironpdf.*; import java.io.IOException; import java.nio.file.Paths; // Apply your license key License.setLicenseKey("YOUR-LICENSE-KEY"); // Set a log path Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log")); // Render the HTML as a PDF. Stored in myPdf as type PdfDocument. PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1>Hello World</h1> Made with IronPDF!"); // Save the PdfDocument to a file myPdf.saveAs(Paths.get("html_saved.pdf")); import com.ironsoftware.ironpdf.*; import java.io.IOException; import java.nio.file.Paths; // Apply your license key License.setLicenseKey("YOUR-LICENSE-KEY"); // Set a log path Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log")); // Render the HTML as a PDF. Stored in myPdf as type PdfDocument. PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1>Hello World</h1> Made with IronPDF!"); // Save the PdfDocument to a file myPdf.saveAs(Paths.get("html_saved.pdf")); JAVA Output PDF Add HTML Headers and Footers Headers and footers are essential components of many PDF documents, and IronPDF makes it easy to integrate HTML headers and footers into your documents. With IronPDF, developers can add custom headers and footers, including text, images, and page numbers, to their PDF documents. This feature is particularly useful for businesses that need to add branding or copyright information to their documents. import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.headerfooter.HtmlHeaderFooter; import java.io.IOException; import java.nio.file.Paths; import java.util.List; import java.util.ArrayList; // Render a PDF from a URL PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com"); // Build a footer using HTML HtmlHeaderFooter footer = new HtmlHeaderFooter(); footer.setMaxHeight(15); // millimeters footer.setHtmlFragment("<center><i>{page} of {total-pages}</i></center>"); footer.setDrawDividerLine(true); pdf.addHtmlFooter(footer); List<PdfDocument> pdfs = new ArrayList<>(); // Build a header using an image asset HtmlHeaderFooter header = new HtmlHeaderFooter(); header.setMaxHeight(20); // millimeters header.setHtmlFragment("<img src=\"logo.png\" />"); header.setBaseUrl("./assets/"); pdf.addHtmlHeader(header); try { pdf.saveAs(Paths.get("assets/html_headers_footers.pdf")); } catch (IOException e) { throw new RuntimeException(e); } import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.headerfooter.HtmlHeaderFooter; import java.io.IOException; import java.nio.file.Paths; import java.util.List; import java.util.ArrayList; // Render a PDF from a URL PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com"); // Build a footer using HTML HtmlHeaderFooter footer = new HtmlHeaderFooter(); footer.setMaxHeight(15); // millimeters footer.setHtmlFragment("<center><i>{page} of {total-pages}</i></center>"); footer.setDrawDividerLine(true); pdf.addHtmlFooter(footer); List<PdfDocument> pdfs = new ArrayList<>(); // Build a header using an image asset HtmlHeaderFooter header = new HtmlHeaderFooter(); header.setMaxHeight(20); // millimeters header.setHtmlFragment("<img src=\"logo.png\" />"); header.setBaseUrl("./assets/"); pdf.addHtmlHeader(header); try { pdf.saveAs(Paths.get("assets/html_headers_footers.pdf")); } catch (IOException e) { throw new RuntimeException(e); } JAVA Output PDF Stamp & Watermark Using IronPDF, developers can add stamps and watermarks to their PDF documents. Watermarks are transparent images or text that appear in the document's background, while stamps add a custom message or image to a new document. These features are great for businesses that need to protect their documents from unauthorized use or to add a custom message to their documents. package IronPDF.ironpdf_java; import java.io.IOException; import java.nio.file.Paths; import com.ironsoftware.ironpdf.*; import com.ironsoftware.ironpdf.stamp.HorizontalAlignment; import com.ironsoftware.ironpdf.stamp.VerticalAlignment; public class Test { public static void main(String[] args) throws IOException { License.setLicenseKey("Your-License"); // Load an existing PDF from the filesystem PdfDocument pdf = PdfDocument.fromFile(Paths.get("C:\\byteToPdf.pdf")); // Apply a watermark to the PDF pdf.applyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, VerticalAlignment.TOP, HorizontalAlignment.CENTER); // Save the watermarked PDF pdf.saveAs(Paths.get("assets/watermark.pdf")); } } package IronPDF.ironpdf_java; import java.io.IOException; import java.nio.file.Paths; import com.ironsoftware.ironpdf.*; import com.ironsoftware.ironpdf.stamp.HorizontalAlignment; import com.ironsoftware.ironpdf.stamp.VerticalAlignment; public class Test { public static void main(String[] args) throws IOException { License.setLicenseKey("Your-License"); // Load an existing PDF from the filesystem PdfDocument pdf = PdfDocument.fromFile(Paths.get("C:\\byteToPdf.pdf")); // Apply a watermark to the PDF pdf.applyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, VerticalAlignment.TOP, HorizontalAlignment.CENTER); // Save the watermarked PDF pdf.saveAs(Paths.get("assets/watermark.pdf")); } } JAVA Output PDF Backgrounds & Foregrounds IronPDF also allows developers to implement custom backgrounds and foregrounds in their PDF documents. Foregrounds are used to add custom text or images on top of a document, while backgrounds add a custom image or color to the background. Business owners who want their documents or PDF forms to have custom branding or graphics will find this feature particularly useful. import com.ironsoftware.ironpdf.*; import java.io.IOException; import java.nio.file.Paths; public class BackgroundForegroundExample { public static void main(String[] args) throws IOException { // Load background and foreground PDFs from the filesystem PdfDocument backgroundPdf = PdfDocument.fromFile(Paths.get("assets/MyBackground.pdf")); PdfDocument foregroundPdf = PdfDocument.fromFile(Paths.get("assets/MyForeground.pdf")); // Render content (HTML, URL, etc) as a PDF Document PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.nuget.org/packages/IronPdf"); // Add the background and foreground PDFs to the newly-rendered document. pdf.addBackgroundPdf(backgroundPdf); pdf.addForegroundPdf(foregroundPdf); // Save the document with background and foreground pdf.saveAs(Paths.get("assets/BackgroundForegroundPdf.pdf")); } } import com.ironsoftware.ironpdf.*; import java.io.IOException; import java.nio.file.Paths; public class BackgroundForegroundExample { public static void main(String[] args) throws IOException { // Load background and foreground PDFs from the filesystem PdfDocument backgroundPdf = PdfDocument.fromFile(Paths.get("assets/MyBackground.pdf")); PdfDocument foregroundPdf = PdfDocument.fromFile(Paths.get("assets/MyForeground.pdf")); // Render content (HTML, URL, etc) as a PDF Document PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.nuget.org/packages/IronPdf"); // Add the background and foreground PDFs to the newly-rendered document. pdf.addBackgroundPdf(backgroundPdf); pdf.addForegroundPdf(foregroundPdf); // Save the document with background and foreground pdf.saveAs(Paths.get("assets/BackgroundForegroundPdf.pdf")); } } JAVA Add & Edit Annotations Annotations are a great way to add additional information to PDF documents, such as notes, comments, or highlights. With IronPDF, developers can easily manage annotations effectively by adding and editing them in their PDF documents. import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.annotation.AnnotationIcon; import com.ironsoftware.ironpdf.annotation.AnnotationManager; import com.ironsoftware.ironpdf.annotation.AnnotationOptions; import java.io.IOException; import java.nio.file.Paths; public class AnnotationExample { public static void main(String[] args) throws IOException { // Load an existing PDF from the file system PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/example.pdf")); // Create an annotation to be placed at a specific location on a page. AnnotationOptions annotation = new AnnotationOptions( "This is a major title", // Title of the annotation "This is the long 'sticky note' comment content...", // Content of the annotation 150, // x-axis coordinate location 250 // y-axis coordinate location ); annotation.setIcon(AnnotationIcon.HELP); annotation.setOpacity(0.9); annotation.setPrintable(false); annotation.setHidden(false); annotation.setOpen(true); annotation.setReadonly(true); annotation.setRotateable(true); // Add the annotation to a specific page of the PDF AnnotationManager annotationManager = pdf.getAnnotation(); annotationManager.addTextAnnotation(annotation, 0); // Add to the first page // Save the PDF with the modifications pdf.saveAs(Paths.get("assets/annotated.pdf")); } } import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.annotation.AnnotationIcon; import com.ironsoftware.ironpdf.annotation.AnnotationManager; import com.ironsoftware.ironpdf.annotation.AnnotationOptions; import java.io.IOException; import java.nio.file.Paths; public class AnnotationExample { public static void main(String[] args) throws IOException { // Load an existing PDF from the file system PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/example.pdf")); // Create an annotation to be placed at a specific location on a page. AnnotationOptions annotation = new AnnotationOptions( "This is a major title", // Title of the annotation "This is the long 'sticky note' comment content...", // Content of the annotation 150, // x-axis coordinate location 250 // y-axis coordinate location ); annotation.setIcon(AnnotationIcon.HELP); annotation.setOpacity(0.9); annotation.setPrintable(false); annotation.setHidden(false); annotation.setOpen(true); annotation.setReadonly(true); annotation.setRotateable(true); // Add the annotation to a specific page of the PDF AnnotationManager annotationManager = pdf.getAnnotation(); annotationManager.addTextAnnotation(annotation, 0); // Add to the first page // Save the PDF with the modifications pdf.saveAs(Paths.get("assets/annotated.pdf")); } } JAVA Output File Outlines & Bookmarks Developers can enhance PDF documents using bookmarks with IronPDF. An outline provides a high-level overview of the contents of a document, while bookmarks provide quick access to specific sections. For large or complex documents, this feature allows users to navigate quickly to their desired sections. import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.bookmark.Bookmark; import com.ironsoftware.ironpdf.bookmark.BookmarkManager; import java.io.IOException; import java.nio.file.Paths; import java.util.List; public class BookmarkExample { public static void main(String[] args) throws IOException { // Load an existing PDF from the file system PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/book.pdf")); // Add top-level bookmarks to pages of the PDF using their page indices BookmarkManager bookmarks = pdf.getBookmark(); bookmarks.addBookMarkAtEnd("Author's Note", 2); bookmarks.addBookMarkAtEnd("Table of Contents", 3); bookmarks.addBookMarkAtEnd("Summary", 10); bookmarks.addBookMarkAtEnd("References", 12); List<Bookmark> bookmarkList = bookmarks.getBookmarks(); Bookmark bookmark = bookmarkList.get(2); // Add a child bookmark bookmark.addChildBookmark("Conclusion", 11); // Save the PDF to the filesystem pdf.saveAs(Paths.get("assets/bookmarked.pdf")); } } import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.bookmark.Bookmark; import com.ironsoftware.ironpdf.bookmark.BookmarkManager; import java.io.IOException; import java.nio.file.Paths; import java.util.List; public class BookmarkExample { public static void main(String[] args) throws IOException { // Load an existing PDF from the file system PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/book.pdf")); // Add top-level bookmarks to pages of the PDF using their page indices BookmarkManager bookmarks = pdf.getBookmark(); bookmarks.addBookMarkAtEnd("Author's Note", 2); bookmarks.addBookMarkAtEnd("Table of Contents", 3); bookmarks.addBookMarkAtEnd("Summary", 10); bookmarks.addBookMarkAtEnd("References", 12); List<Bookmark> bookmarkList = bookmarks.getBookmarks(); Bookmark bookmark = bookmarkList.get(2); // Add a child bookmark bookmark.addChildBookmark("Conclusion", 11); // Save the PDF to the filesystem pdf.saveAs(Paths.get("assets/bookmarked.pdf")); } } JAVA Summary This article explores various features of IronPDF, such as the ability to add annotations, bookmarks, HTML content, background and foreground colors, and headers and footers to PDF documents. The article provides step-by-step instructions for implementing these features using IronPDF, making it easy for developers to create professional-looking PDF documents that meet their specific needs. Whether you're building a web application or a desktop application, IronPDF can help you streamline the process of generating PDF documents, saving you time and effort while ensuring that your documents look great. The IronPDF licensing information starts from $799. IronPDF also offers a free trial, allowing developers to test the library and evaluate its capabilities before making a purchase decision. During the trial period, users have access to all the features of the library, including support and updates. After the trial period, users can choose to purchase a license to continue using the library. The pricing for IronPDF varies depending on the number of developers using the library and the type of license. Frequently Asked Questions How can I create PDF documents programmatically in Java? You can use IronPDF for Java to programmatically create PDF documents. The library offers a wide range of features to generate high-quality PDFs, including support for HTML content, headers, footers, and more. What methods are available for adding HTML content to a PDF? IronPDF allows developers to use the RenderHtmlAsPdf method to add HTML content directly into a PDF. This method supports various HTML elements and CSS for styling. Can I include digital signatures in my PDF documents? Yes, IronPDF supports adding digital signatures to PDF documents, ensuring document authenticity and security. How can I protect my PDF documents with passwords? IronPDF provides functionality to create password-protected PDFs, allowing you to secure sensitive information within your documents. Is it possible to add custom backgrounds and foregrounds to PDFs? IronPDF enables developers to add custom backgrounds and foregrounds to PDFs, which can include branding elements or decorative graphics. How can outlines and bookmarks improve document navigation in PDFs? IronPDF allows the addition of outlines and bookmarks, which help users quickly navigate to specific sections of a PDF and provide an organized overview of the document structure. What options are available for annotating PDF documents? With IronPDF, you can add various annotations such as notes, comments, and highlights, enhancing the interactivity and usability of your PDF documents. What are the licensing options for using IronPDF in Java applications? IronPDF offers several licensing options, including a free trial for evaluation purposes. Licenses vary based on the number of developers and the specific needs of your project. Darrius Serrant Chat with engineering team now Full Stack Software Engineer (WebOps) Darrius Serrant holds a Bachelor’s degree in Computer Science from the University of Miami and works as a Full Stack WebOps Marketing Engineer at Iron Software. Drawn to coding from a young age, he saw computing as both mysterious and accessible, making it the perfect medium for creativity ...Read More Related Articles Updated June 22, 2025 How To Convert TIFF To PDF in Java This comprehensive guide will walk you through the steps on how to convert TIFF image to PDF seamlessly in Java using IronPDF. Read More Updated July 28, 2025 How to Convert PDF to PDFA in Java In this article, we will explore how to convert PDF files to PDF/A format in Java using IronPDF. Read More Updated July 28, 2025 How to Create A PDF Document in Java This article will provide a comprehensive guide to working with PDFs in Java, covering key concepts, the best library, and examples. Read More Java PDF Generator (Code Example Tutorial)How to Generate PDF Files From Java...
Updated June 22, 2025 How To Convert TIFF To PDF in Java This comprehensive guide will walk you through the steps on how to convert TIFF image to PDF seamlessly in Java using IronPDF. Read More
Updated July 28, 2025 How to Convert PDF to PDFA in Java In this article, we will explore how to convert PDF files to PDF/A format in Java using IronPDF. Read More
Updated July 28, 2025 How to Create A PDF Document in Java This article will provide a comprehensive guide to working with PDFs in Java, covering key concepts, the best library, and examples. Read More
All your questions are answered to make sure you have all the information you need. (No commitment whatsoever.)