Cómo convertir HTML a PDF en Java

En Java, a través de la librería iText puedes generar PDF manualmente con sus funciones desde código o bien desde HTML a partir del String correspondiente.

La mayoría de documentación son para hacerlo de la primera forma así demostrar la potencia de la librería recorriendo sus funciones, así vamos a ver cómo convertir HTML a PDF en Java de ambas formas.

Convertir HTML a PDF: forma sencilla

Simplemente, accedes a un fichero HTML existente y se convierte a PDF. Nada más.

import java.io.*; 
import com.lowagie.text.DocumentException; 
import org.xhtmlrenderer.pdf.ITextRenderer; 
public class HTML2PDF { 
  public static void main(String[] args) throws IOException, DocumentException { 
    String ficheroHTML = "plantilla.html"; 
    String url = new File(ficheroHTML).toURI().toURL().toString(); 
    String ficheroPDF = "plantilla.pdf"; 
    OutputStream os = new FileOutputStream(ficheroPDF);  
    ITextRenderer renderer = new ITextRenderer();     
    renderer.setDocument(url); 
    renderer.layout(); 
    renderer.createPDF(os); 
    os.close(); 
  } 
}

Convertir HTML a PDF: avanzada

Si de la forma anterior necesitaras añadir el autor del documento, el tamaño del documento PDF (pagesize) u otra propiedad, a continuación tienes un ejemplo.

Recuerda consultar la documentación de la librería iText porque hay más opciones disponibles.

import java.io.FileOutputStream; 
import java.io.StringReader; 
import com.lowagie.text.Document; 
import com.lowagie.text.PageSize; 
import com.lowagie.text.html.simpleparser.HTMLWorker; 
import com.lowagie.text.pdf.PdfWriter; 
public class HTML2PDF { 
  public static void main(String ... args ) { 
    try { 
      Document document = new Document(PageSize.A4); 
      PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("plantilla.pdf")); 
      document.open(); 
      document.addAuthor("Persona creadora"); 
      document.addCreator("Software generador"); 
      document.addCreationDate(); 
      document.addTitle("Titulo del documento"); 
      HTMLWorker htmlWorker = new HTMLWorker(document); 
      String str = "Este es el contenido HTML, bien en String o reemplazalo por el contenido del fichero del ejemplo anterior"; 
      htmlWorker.parse(new StringReader(str)); 
      document.close(); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
}

Via Java & Rgagnon

David Burgos

Read more posts by this author.