Convertir de Word a PDF con Java

En algún momento puede surgir la necesidad de extraer información de un fichero de texto. Una forma sencilla del tratamiento de información de ficheros puede ser a través del lenguaje de programación Java.

¿Qué es Java? Es un lenguaje de programación que se creó en 1995 por Sun Microsystem. Para conocer más, recomiendo el siguiente artículo: https://rosamarfil.es/tutoriales/otras-entradas/que-es-java/

En este ejemplo concreto leeremos un fichero de texto con extensión *.docx y lo convertiremos a *.pdf.

A continuación, explico los pasos necesarios para ello.

Crear proyecto Java

En este ejemplo, voy a trabajar con el entorno de desarrollo Eclipse.

Una vez abierta la aplicación, haz clic en Archivo -> Nuevo -> Proyecto Java.

Por un nombre y como recomendación utiliza la versión de Java 8.

Presiona sobre Finalizar.

Convertir de Word a PDF con Java
Creación Proyecto JAVA con la versión 8.

Crear clase principal

Crea una clase de tipo «main» (o principal) dentro del directorio src y dentro de un paquete (en mi caso developrogramming.com).

Convertir de Word a PDF con Java
Creación de clase principal.

Usar librería externas

Para la lectura de ficheros Word será necesario la utilización de librerías externas. Convertiremos a Proyecto Maven para poder descargar de manera sencilla estás librería.

Haz clic derecho sobre el proyecto y selecciona Configure -> Convert to Maven Project. Presiona Finish.

Añade las siguientes líneas en el fichero pom.xml. Es importante añadir las versiones correctas, ya que puede haber conflictos.

	<dependencies>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.15</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.15</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>3.0.1-FINAL</version>
		</dependency>

		<dependency>
			<groupId>fr.opensagres.xdocreport</groupId>
			<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
			<version>1.0.6</version>
		</dependency>

	</dependencies>

Leer fichero de word *.docx

Es hora de añadir el código para leer el fichero de word con extensión *.docx y convertirlo a PDF (*.pdf).

Aquí haremos uso de las librerías añadidas anteriormente en el fichero pom.xml, leeremos el fichero y haremos un tratamiento mínimo de los posibles errores capturándolos.

En esta caso leeré el fichero C:\ficherosParaLeer\fichero1.docx que contiene un texto e imagen simple.

Observa el siguiente código de la clase main llamada Principal.java:

package developrogramming.com;

//Librerías JAVA
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

//Librerías POI
import org.apache.poi.xwpf.converter.core.XWPFConverterException;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class Principal {

	public static void main(String[] args) {

		File archivoWord = new File("C:\\ficherosParaLeer\\fichero1.docx");
		File archivoPDF = new File("C:\\ficherosParaLeer\\fichero1.pdf");

		// Se lee el contenido del fichero Word y se guarda en un objeto especial POI
		// para su posterior conversión
		XWPFDocument document = leerDocx(archivoWord);

		// Se convierte el contenido del fichero Word a PDF
		if (convertirPDF(archivoPDF, document)) {
			// Mostramos mensaje de éxito
			System.out.println("El fichero de Word se ha convertido a PDF con éxito.");
		} else {
			System.out.println("ERROR: El fichero de Word NO se ha convertido a PDF.");
		}

	}

	public static XWPFDocument leerDocx(File archivoWord) {

		XWPFDocument documentoWord = null;

		try {
			// Se prepara el archivo para su tratamiento
			InputStream texto = new FileInputStream(archivoWord);

			// Creamos documento especial POI para su posterior conversión
			documentoWord = new XWPFDocument(texto);

		} catch (IOException e) {
			System.out.println("Error leyendo el fichero de Word");
			e.printStackTrace();
		}
		return documentoWord;

	}

	public static boolean convertirPDF(File archivoPDF, XWPFDocument documentWord) {

		boolean exito;

		try {
			OutputStream out = new FileOutputStream(archivoPDF);
			PdfOptions options = PdfOptions.create();
			PdfConverter.getInstance().convert(documentWord, out, options);
			exito = true;

		} catch (XWPFConverterException e) {
			exito = false;
			System.out.println("Error en la conversión");
			e.printStackTrace();
		} catch (IOException e) {
			exito = false;
			System.out.println("Error creando el fichero PDF");
			e.printStackTrace();
		}

		return exito;

	}

}

Ejecuta el programa haciendo clic derecho sobre la clase main y eligiendo Run As -> Java Application.

Se muestra en la pestaña Consola el resultado:

Si abrimos el fichero se muestra de forma correcta:

Convertir de Word a PDF con Java
Resultado de Convertir de Word a PDF con Java

Enlace a GitHub:

https://github.com/Developrogramming/ConvertWordToPDF


Comparte si te ha gustado. Así me ayudas y motivas a mantener esta web. ¡Muchas gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *