HTML a PDF en Java
Este tutorial enseña a los desarrolladores Java a utilizar la biblioteca IronPDF para convertir contenidos HTML en PDF perfectos. (formato de documento portátil) documentos.
IronPDF es un conversor de PDF y una biblioteca de procesamiento de PDF con todas las funciones. IronPDF está disponible para .NET y Java lenguajes de programación. Este tutorial cubre el uso de la biblioteca para convertir contenido HTML (archivos, marcas, etc.) en aplicaciones Java. El tutorial para convertir HTML a PDF en aplicaciones .NET está disponible aquí.
Visión general
Cómo convertir HTML a PDF en Java
![Cómo convertir HTML a PDF en Java](/static-assets/pdf/images/html-to-pdf-java.png)
- Instalar biblioteca Java para convertir HTML a PDF
- Convertir una cadena HTML en un documento PDF
renderHtmlAsPdf
método - Generar archivos PDF a partir de la URL de un sitio web en Java
- Convierte archivos HTML en archivos PDF con
renderHtmlFileAsPdf
método - Guardar el PDF generado como un nuevo archivo
Primeros pasos
1. Instalación de la biblioteca PDF IronPDF for Java
Instalar con Maven
Hay dos formas de incorporar el IronPDF Library en un proyecto Java:
- Añadir IronPDF como dependencia en un proyecto Java configurado con Maven
Descargue el archivo JAR IronPDF y añádalo manualmente al classpath del proyecto.
A continuación se describen brevemente ambos métodos de instalación.
Opción 1: Instalar IronPDF como dependencia de Maven
Para instalar IronPDF en un proyecto Java utilizando Maven, añada los siguientes artefactos a la sección de dependencias del archivo pom.xml del proyecto Java.
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>com.ironsoftware</artifactId>
<version>2024.8.1</version>
</dependency>
El primer artefacto hace referencia al última versión de la biblioteca IronPDF. El segundo artefacto hace referencia a un SL4J aplicación. Esta dependencia es necesaria para permitir que el motor de renderizado de IronPDF genere mensajes de registro durante la ejecución. Los ingenieros de software pueden sustituir esta dependencia por otros proveedores de registro (como Logback y Log4J); u omitirlo por completo si no necesitan o no desean la tala de árboles.
Ejecute el comando mvn install
dentro de un terminal en el directorio raíz del proyecto Java para descargar las librerías anteriormente mencionadas.
Opción 2: Instalar manualmente el JAR de IronPDF
Los desarrolladores que prefieran no utilizar Maven o cualquier otro sistema de gestión de dependencias tendrán que descargue el archivo JAR de la biblioteca IronPDF (y el opcional SL4J aplicación) y añadirlo manualmente a la ruta de clases de su proyecto.
Descargue el archivo JAR de IronPDF directamente de aquí (o desde el repositorio Maven).
Guía práctica y ejemplos de código
2. Conversión de HTML a PDF
Esta sección muestra las principales capacidades de renderizado HTML a PDF de IronPDF.
La clase PdfDocument
es el punto de entrada para todas las funciones de renderizado y manipulación de documentos PDF de IronPDF. La clase incluye un conjunto de métodos sólidos para convertir documentos HTML a PDF en apoyo de los tres casos de uso siguientes: conversión a partir de cadenas/marcas HTML, conversión a partir de un archivo HTML y conversión a partir de una URL. Esta sección tratará brevemente cada uno de estos casos de uso, con enlaces a contenidos adicionales para recabar más información.
2.1 Importar el paquete IronPDF
Todos los componentes de conversión y procesamiento de IronPDF están contenidos en el paquete com.ironsoftware.ironpdf.
Incluya la siguiente sentencia import en la parte superior de los archivos fuente Java (donde se utilizará IronPDF) para que estos componentes sean accesibles al código fuente de la aplicación.
// Import statement for IronPDF for Java
import com.ironsoftware.ironpdf.*;
2.2. Configurar la clave de licencia (opcional)
IronPDF for Java es de uso gratuito. Sin embargo, para los usuarios gratuitos, marcará los documentos PDF con una marca de agua de fondo en mosaico (como se muestra en la siguiente imagen).
Para utilizar IronPDF para generar PDF sin marcas de agua, la biblioteca debe utilizar una clave de licencia válida. La siguiente línea de código configura la biblioteca con una clave de licencia.
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
La clave de licencia debe establecerse antes de generar archivos PDF o personalizar su contenido. Le recomendamos que llame al método setLicenseKey
antes de todas las demás líneas de código.
Comprar una clave de licencia de nuestra página de licencias, o póngase en contacto con nosotros para obtener una clave de licencia de prueba gratuita.
2.3 Establecer la ubicación del archivo de registro (opcional)
Por defecto (y suponiendo que hay un proveedor SLF4J instalado)IronPDF genera mensajes de registro en un archivo de texto llamado IronPdfEngine.log ubicado en el directorio raíz de la aplicación Java.
Para especificar un nombre y una ubicación diferentes para el archivo de registro, utilice el método Settings.setLogPath
:
// Set a log path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
Nota: Se debe llamar a Settings.setLogPath
antes de utilizar cualquier método de conversión y manipulación de PDF.
2.4. Crear un PDF a partir de una cadena HTML
PdfDocument.renderHtmlAsPdf
convierte una cadena de contenido HTML en un documento PDF.
El siguiente ejemplo de código utiliza un único elemento de encabezado para generar un nuevo archivo.
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
renderHtmlAsPdf
procesa todo el contenido HTML, CSS y JavaScript de la misma forma que los navegadores modernos que cumplen con los estándares. Esto ayuda a los ingenieros de software a crear documentos PDF con el mismo aspecto que aparecen en un navegador web.
El método renderHtmlAsPdf
puede generar imágenes, hojas de estilo y scripts ubicados en carpetas de un ordenador o en una unidad de red. El siguiente ejemplo produce un documento PDF a partir de HTML que hace referencia a un archivo CSS y a una imagen situada en una carpeta assets
:
String html = "<html><head><title>Hello world!</title><link rel='stylesheet' href='assets/style.css'></head><body><h1>Hello from IronPDF!</h1><a href='https://ironpdf.com/java/'><img src='assets/logo.png' /></a></body></html>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs("output.pdf");
El resultado del código anterior se muestra en la siguiente imagen.
Un segundo (opcional) de renderHtmlAsPdf
permite a los desarrolladores especificar una ruta base desde la que referenciar los activos web. Esta ruta puede ser un directorio del sistema de archivos local o incluso una ruta URL.
Más información sobre el método renderHtmlAsPdf
en este ejemplo de códigoo léalo en el Referencia API páginas.
2.5. Crear un PDF a partir de una URL
Los desarrolladores pueden convertir páginas web en línea en documentos PDF utilizando el método PdfDocument.renderUrlAsPdf
de IronPDF.
El siguiente ejemplo convierte el artículo de Wikipedia en contenido PDF.
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("url_to_pdf.pdf");
A continuación se muestra el formato de archivo PDF generado.
Más información sobre la conversión de páginas web en contenido PDF en la página ejemplo de código.
2.6. Creación de un PDF a partir de un archivo HTML
IronPDF también puede convertir un documento HTML almacenado en un sistema de archivos local directamente en su formato PDF equivalente.
El siguiente ejemplo de código utiliza esta factura como demostración real de lo bien que IronPDF puede convertir archivos HTML.
Para mayor comodidad, reproducimos aquí el código HTML de la factura:
<html>
<head>
<meta charset="utf-8">
<title>Invoice</title>
<link rel="stylesheet" href="style.css">
<link rel="license" href="https://www.opensource.org/licenses/mit-license/">
<script src="script.js"></script>
</head>
<body>
<header>
<h1>Invoice</h1>
<address contenteditable>
<p>Jonathan Neal</p>
<p>101 E. Chapman Ave<br>Orange, CA 92866</p>
<p>(800) 555-1234</p>
</address>
<span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
<h1>Recipient</h1>
<address contenteditable>
<p>Some Company<br>c/o Some Guy</p>
</address>
<table class="meta">
<tr>
<th><span contenteditable>Invoice #</span></th>
<td><span contenteditable>101138</span></td>
</tr>
<tr>
<th><span contenteditable>Date</span></th>
<td><span contenteditable>January 1, 2012</span></td>
</tr>
<tr>
<th><span contenteditable>Amount Due</span></th>
<td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
</tr>
</table>
<table class="inventory">
<thead>
<tr>
<th><span contenteditable>Item</span></th>
<th><span contenteditable>Description</span></th>
<th><span contenteditable>Rate</span></th>
<th><span contenteditable>Quantity</span></th>
<th><span contenteditable>Price</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
<td><span contenteditable>Experience Review</span></td>
<td><span data-prefix>$</span><span contenteditable>150.00</span></td>
<td><span contenteditable>4</span></td>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
</tbody>
</table>
<a class="add">+</a>
<table class="balance">
<tr>
<th><span contenteditable>Total</span></th>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
<tr>
<th><span contenteditable>Amount Paid</span></th>
<td><span data-prefix>$</span><span contenteditable>0.00</span></td>
</tr>
<tr>
<th><span contenteditable>Balance Due</span></th>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
</table>
</article>
<aside>
<h1><span contenteditable>Additional Notes</span></h1>
<div contenteditable>
<p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
</div>
</aside>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<title>Invoice</title>
<link rel="stylesheet" href="style.css">
<link rel="license" href="https://www.opensource.org/licenses/mit-license/">
<script src="script.js"></script>
</head>
<body>
<header>
<h1>Invoice</h1>
<address contenteditable>
<p>Jonathan Neal</p>
<p>101 E. Chapman Ave<br>Orange, CA 92866</p>
<p>(800) 555-1234</p>
</address>
<span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
<h1>Recipient</h1>
<address contenteditable>
<p>Some Company<br>c/o Some Guy</p>
</address>
<table class="meta">
<tr>
<th><span contenteditable>Invoice #</span></th>
<td><span contenteditable>101138</span></td>
</tr>
<tr>
<th><span contenteditable>Date</span></th>
<td><span contenteditable>January 1, 2012</span></td>
</tr>
<tr>
<th><span contenteditable>Amount Due</span></th>
<td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
</tr>
</table>
<table class="inventory">
<thead>
<tr>
<th><span contenteditable>Item</span></th>
<th><span contenteditable>Description</span></th>
<th><span contenteditable>Rate</span></th>
<th><span contenteditable>Quantity</span></th>
<th><span contenteditable>Price</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
<td><span contenteditable>Experience Review</span></td>
<td><span data-prefix>$</span><span contenteditable>150.00</span></td>
<td><span contenteditable>4</span></td>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
</tbody>
</table>
<a class="add">+</a>
<table class="balance">
<tr>
<th><span contenteditable>Total</span></th>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
<tr>
<th><span contenteditable>Amount Paid</span></th>
<td><span data-prefix>$</span><span contenteditable>0.00</span></td>
</tr>
<tr>
<th><span contenteditable>Balance Due</span></th>
<td><span data-prefix>$</span><span>600.00</span></td>
</tr>
</table>
</article>
<aside>
<h1><span contenteditable>Additional Notes</span></h1>
<div contenteditable>
<p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
</div>
</aside>
</body>
</html>
Supongamos que el archivo HTML se ha guardado en una carpeta llamada facturas junto con su archivo CSS y su archivo JavaScript. Podemos utilizar IronPDF para convertir el archivo HTML de la siguiente manera:
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
Al igual que con los ejemplos de conversión de cadenas HTML a PDF, IronPDF resuelve correctamente cualquier URL relativa en un documento HTML a sus rutas correctas en el sistema de archivos. Como resultado, el archivo PDF que produce este ejemplo es capaz de capturar perfectamente las influencias visuales que cualquier hoja de estilos y scripts referenciados tendrían normalmente en una página web.
3. Lecturas complementarias
Sólo hemos arañado la superficie de las capacidades de conversión de HTML a PDF de IronPDF.
Profundice sus conocimientos sobre el uso del conversor HTML a PDF para el desarrollo en Java utilizando los ejemplos de código que aparecen en nuestra sección Ejemplos de códigos sección.
- Leer este ejemplo de código para aprender a personalizar la apariencia de un documento PDF durante el proceso de conversión.
- Generar archivos PDF con encabezados y pies de página personalizados, tamaños de margen, dimensiones de la página, marcas de aguay mucho más.
Extraer el contenido del PDF (texto y imágenes) de los documentos, optimizar el tamaño de los archivosy imprimir PDF mediante programación
Estudiar la Referencia de la API Java de IronPDF sobre la clase
PdfDocument
para un control aún mayor de la conversión de HTML a PDF.
Ver el vídeo tutorial de HTML a PDF
Acceso rápido a tutoriales
Descargar este tutorial como código fuente Java
El código fuente Java HTML a PDF completo de este tutorial está disponible para su descarga gratuita como proyecto IntelliJ comprimido.
DescargarExplore este tutorial en GitHub
El código fuente de este proyecto está disponible en GitHub.
Utilice este código como una manera fácil de poner en marcha en tan sólo unos minutos. El proyecto se guarda como un proyecto de IntellJ IDEA, pero se puede importar en otros IDEs de Java populares.
Java HTML a PDFVer la referencia de la API
Explore la Referencia de la API para IronPDF, que describe los detalles de todas las características, espacios de nombres, clases, métodos, campos y enums de IronPDF.
Ver la referencia de la API